1.核心包

#jieba、pandas用来处理数据,数据源以xls格式存储的,这里用pandas进行处理
import jieba
from jieba import analyse
import pandas as pd
#scipy、wordcloud创建词云
from scipy.misc import imread
from wordcloud import WordCloud
from wordcloud import ImageColorGenerator
#matpoltlib展示、保存生成的词云图
import matplotlib.pyplot as plt

2.过程

import jieba
from jieba import analyse
import pandas as pd import sys
reload(sys)
sys.setdefaultencoding('utf-8') # 1.stopwords
def stop_words():
stop_dict = set()
with open(u'./百度停用词列表.txt', 'r')as f:
words = f.readlines()
for word in words:
stop_dict.add(word.strip().decode('utf-8'))
return stop_dict # 2.分词并去停用词
# save chinese only,remove english words,emoji
def remove_stopwords(stop_words):
source_data = pd.read_excel('./11.xls')
all_content = []
content = source_data[u'内容']
f = open('./weibo.txt', 'w')
for line in content:
cut_list = [c for c in jieba.cut(line)]
ret_set = set(cut_list) - stop_words
ret_list = list(ret_set)
f.writelines([str(line) for line in ret_list])
f.writelines('\n')
all_content.extend(ret_list)
f.close() #3.统计词频
def get_frequency_words(file):
with open(file, 'r') as f:
texts = f.read()
     # 统计词频
top_words = analyse.textrank(texts, topK=400, withWeight=True)
ret_words = {}
for word in top_words:
ret_words[word[0]] = word[1]
return ret_words from scipy.misc import imread
from wordcloud import WordCloud
from wordcloud import ImageColorGenerator
import matplotlib.pyplot as plt

# 4.生成词云图并保存
def generate_word_cloud(dict):
color_mask = imread('./background.jpg')
cloud = WordCloud(
# 设置字体,不指定就会出现乱码,文件名不支持中文
font_path="./static/chinese.msyh.ttf",
# font_path=path.join(d,'simsun.ttc'),
# 设置背景色,默认为黑,可根据需要自定义为颜色
background_color='white',
# 词云形状,
mask=color_mask,
# 允许最大词汇
max_words=400,
# 最大号字体,如果不指定则为图像高度
max_font_size=150,
# 画布宽度和高度,如果设置了mask则不会生效
# 词语水平摆放的频率,默认为0.9.即竖直摆放的频率为0.1
prefer_horizontal=0.8
)
cloud.generate_from_frequencies(frequencies=dict)
cloud.to_file('word_cloud.jpg')
# plt.imshow(cloud)
# 不现实坐标轴
plt.axis('off')
# 绘制词云
# plt.figure(dpi = 600)
image_colors = ImageColorGenerator(color_mask)
# 重新上色
plt.imshow(cloud.recolor(color_func=image_colors))
  # 保存图片
plt.savefig('./result2.png')
# plt.show() if __name__ == '__main__':
stop_words = stop_words()
remove_stopwords(stop_words=stop_words)
words_frequency = get_frequency_words('./weibo.txt')
generate_word_cloud(words_frequency)

[注]:(1).wordcloud.generate_from_text(text=text)可以直接由文本生成词云,但必须是英文文本。

  (2).wordcloud.generate_from_frequencies(frequencies=dict)由词频字典生成词云,词频越大则显示该词size越大
[结果]:

[python基础] python生成wordcloud并保存的更多相关文章

  1. python词云生成-wordcloud库

    python词云生成-wordcloud库 全文转载于'https://www.cnblogs.com/nickchen121/p/11208274.html#autoid-0-0-0' 一.word ...

  2. python基础-python解释器多版本共存-变量-常量

    一.编程语言的发展史 机器语言-->汇编语言-->高级语言,学习难度及执行效率由高到低,开发效率由低到高 机器语言:二进制编程,0101 汇编语言:用英文字符来代替0101编程 高级语言: ...

  3. python基础--python基本知识、七大数据类型等

    在此申明一下,博客参照了https://www.cnblogs.com/jin-xin/,自己做了部分的改动 (1)python应用领域 目前Python主要应用领域: 云计算: 云计算最火的语言, ...

  4. python基础---->python的使用(三)

    今天是2017-05-03,这里记录一些python的基础使用方法.世上存在着不能流泪的悲哀,这种悲哀无法向人解释,即使解释人家也不会理解.它永远一成不变,如无风夜晚的雪花静静沉积在心底. Pytho ...

  5. Python基础--Python简介和入门

    ☞写在前面 在说Python之前,我想先说一下自己为什么要学Python,我本人之前也了解过Python,但没有深入学习.之前接触的语言都是Java,也写过一些Java自动化用例,对Java语言只能说 ...

  6. Python 基础-python环境变量、模块初识及字符类型

    (1).模块内置模块.第三方模块.自定义模块初识模块:sys \ os一般标准库存放路径 C:\Users\Administrator\AppData\Local\Programs\Python\Py ...

  7. python基础===Python性能优化的20条建议

    优化算法时间复杂度 算法的时间复杂度对程序的执行效率影响最大,在Python中可以通过选择合适的数据结构来优化时间复杂度,如list和set查找某一个元素的时间复杂度分别是O(n)和O(1).不同的场 ...

  8. Python基础---->python的使用(二)

    学习一下python,这里对python的基础知识做一个整理.似等了一百年忽而明白,即使再见面,成熟地表演,不如不见. python的一些应用 一.类似于java中的MessageFormat用法 w ...

  9. python基础===Python 代码优化常见技巧

    Python 代码优化常见技巧 代码优化能够让程序运行更快,它是在不改变程序运行结果的情况下使得程序的运行效率更高,根据 80/20 原则,实现程序的重构.优化.扩展以及文档相关的事情通常需要消耗 8 ...

随机推荐

  1. vue项目 build之后发布到服务器index.html页面空白解决方法

    第一部分 之前一直不太理解为什么要使用vue+webapck,还有在使用了vue-cli之后会用到后台,即vue-cli自动帮我们安装了express服务器,在本地服务器上运行,因为我们希望可以模拟在 ...

  2. 【解题报告】洛谷 P2571 [SCOI2010]传送带

    [解题报告]洛谷 P2571 [SCOI2010]传送带今天无聊,很久没有做过题目了,但是又不想做什么太难的题目,所以就用洛谷随机跳题,跳到了一道题目,感觉好像不是太难. [CSDN链接](https ...

  3. CSS 嵌入,及其选择器

    CSS 1. CSS样式表的几种使用方式 1.元素内嵌 <p style="font-size"></p> 2.内部文档内嵌 <style type= ...

  4. Sublime Text 3 快捷键(转载)

    本文转自:https://segmentfault.com/a/1190000002570753 (欢迎阅读原文,侵删) Sublime Text 3 快捷键精华版 Ctrl+Shift+P:打开命令 ...

  5. react入门----(this.state/表单/Ajax)

    1.this.state 组件免不了要与用户互动,React 的一大创新,就是将组件看成是一个状态机,一开始有一个初始状态,然后用户互动,导致状态变化,从而触发重新渲染 UI var TestStat ...

  6. 07.C语言:结构体、共用体、枚举

    一.结构体 是一种复合的数据类型,由多个不同类型的数据(为结构体的成员)组成的集合. 在c语言中没有给出结构体这种类型具体的形式(名称),但是给出类定义该结构体类型的方法(格式). 在使用结构体类型时 ...

  7. BZOJ 4976 [Lydsy1708月赛]宝石镶嵌

    [题解] 我们设总共有m个二进制位出现过1,那么如果n-k≥m,显然所有的1都可以出现,那么答案就是把所有的数或起来. 如果n-k<m,那么因为k不超过100,ai不超过1e5,所以n不超过11 ...

  8. ebay 如何获取用户token

    1. 首先 配置环境加载依赖的ebay SDK 下载地址 https://go.developer.ebay.com/ebay-sdks 需要在本地仓库安装下面的jar mvn install:ins ...

  9. 使用JdbcTemplate和JdbcDaoSupport

    [Spring对JDBC的支持] [JDBCTemplate简介] 1.为了是JDBC更加易于使用,Spring在JDBC API上定义了一个抽象层,以此建立一个JDBC存取框架. 2.作为Sprin ...

  10. JavaSE 学习笔记之API(二十一)

    API--- java.lang.Runtime: 类中没有构造方法,不能创建对象. 但是有非静态方法.说明该类中应该定义好了对象,并可以通过一个static方法获取这个对象.用这个对象来调用非静态方 ...