[python基础] python生成wordcloud并保存
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并保存的更多相关文章
- python词云生成-wordcloud库
python词云生成-wordcloud库 全文转载于'https://www.cnblogs.com/nickchen121/p/11208274.html#autoid-0-0-0' 一.word ...
- python基础-python解释器多版本共存-变量-常量
一.编程语言的发展史 机器语言-->汇编语言-->高级语言,学习难度及执行效率由高到低,开发效率由低到高 机器语言:二进制编程,0101 汇编语言:用英文字符来代替0101编程 高级语言: ...
- python基础--python基本知识、七大数据类型等
在此申明一下,博客参照了https://www.cnblogs.com/jin-xin/,自己做了部分的改动 (1)python应用领域 目前Python主要应用领域: 云计算: 云计算最火的语言, ...
- python基础---->python的使用(三)
今天是2017-05-03,这里记录一些python的基础使用方法.世上存在着不能流泪的悲哀,这种悲哀无法向人解释,即使解释人家也不会理解.它永远一成不变,如无风夜晚的雪花静静沉积在心底. Pytho ...
- Python基础--Python简介和入门
☞写在前面 在说Python之前,我想先说一下自己为什么要学Python,我本人之前也了解过Python,但没有深入学习.之前接触的语言都是Java,也写过一些Java自动化用例,对Java语言只能说 ...
- Python 基础-python环境变量、模块初识及字符类型
(1).模块内置模块.第三方模块.自定义模块初识模块:sys \ os一般标准库存放路径 C:\Users\Administrator\AppData\Local\Programs\Python\Py ...
- python基础===Python性能优化的20条建议
优化算法时间复杂度 算法的时间复杂度对程序的执行效率影响最大,在Python中可以通过选择合适的数据结构来优化时间复杂度,如list和set查找某一个元素的时间复杂度分别是O(n)和O(1).不同的场 ...
- Python基础---->python的使用(二)
学习一下python,这里对python的基础知识做一个整理.似等了一百年忽而明白,即使再见面,成熟地表演,不如不见. python的一些应用 一.类似于java中的MessageFormat用法 w ...
- python基础===Python 代码优化常见技巧
Python 代码优化常见技巧 代码优化能够让程序运行更快,它是在不改变程序运行结果的情况下使得程序的运行效率更高,根据 80/20 原则,实现程序的重构.优化.扩展以及文档相关的事情通常需要消耗 8 ...
随机推荐
- Group共享网元
熟悉TWaver的用户都知道Group的概念,如果是Group,那必然会出现一个网元在多组的情况,最近有客户遇到这个问题,给写了Demo,这些也跟大家分享一下如何实现,先让我们看看共享网元的效果. 熟 ...
- NOIP 2008 传纸条(洛谷P1006,动态规划递推,滚动数组)
题目链接:P1006 传纸条 PS:伤心,又想不出来,看了大神的题解 AC代码: #include<bits/stdc++.h> #define ll long long using na ...
- UVA - 247 Calling Circles(Floyd求传递闭包)
题目: 思路: 利用Floyd求传递闭包(mp[i][j] = mp[i][j]||(mp[i][k]&&mp[k][j]);),当mp[i][j]=1&&mp[j][ ...
- TestNG参数化测试
参数化有两种方法: 第一种:在xml文件中声明 第二种:用@DataProvider注解 先介绍第一种方法: ParameterTest类:用@Parameters({"name" ...
- MyBatis 的基本要素—核心对象
MyBatis 三个基本要素 ➢ 核心接口和类 ➢ MyBatis 核心配置文件(mybatis-config.xml) ➢ SQL 映射文件(mapper.xml) MyBatis 核心接口和类 ...
- git 连接github.com 并配置密钥
传送门:http://www.jianshu.com/p/ff1034ed270e #备份ssh cd ~/.ssh $ ls $ mkdir key_backup //创建备份文件夹 $ cp id ...
- vue 添加axios解决post传参数为null问题
本文主要参考: https://www.npmjs.com/package/axios http://jingyan.baidu.com/article/29697b916d6a7bab20de3cf ...
- html to canvas
html to canvas Screenshots https://html2canvas.hertzen.com/ https://github.com/niklasvh/html2canvas ...
- C++ - new delete 高维数组小结
借鉴:http://www.cnblogs.com/beyondstorm/archive/2008/08/26/1276278.html http://www.cnblogs.com/platero ...
- django自身提供的sitemap和feed实现样例
<DJANGO BY EXAMPLE>这书的例子真是精心全过的, 基本的WEB开发过程全覆盖啊. 跟着一步一步的弄就OK啦..可以长很多知道的. 这次跟着作的是sitemap和feed功能 ...