python + wordcloud实现任意形状标签云
2016-12-12 19:48
525 查看
公司最新App——AirOh已经上线三个多月,积累了首批原始用户。后台分别对用户和功能进行了统计分析,得到了丰富的数据结果。除了常规的表格、曲线、柱状图及污染热图等展示形式,亦对数据进行标签化处理,得到了非常有意思的展现形式。结果如下:
从两张图的对比来看,标签云的效果比表格形象,用户更加容易理解,并带有一些小心思的创新。
目前,python + wordcloud实现标签云效果的教程很多,但由于机子的配置等一些问题,还是趟了一些坑,做下记录,供查询。
安装python插件
sudo apt-get install python-tk
注意:一定要提前安装该插件,不然会出现报错
主要原因是matplotlib插件中plt.imshow(wordcloud)中默认backend设置为Agg,而改GUI无法加载图片, 修改/etc/matplotlibrc
sudo apt-get install python-numpy
sudo apt-get install python-matplotlib
运行事例代码
这里就不赘述,直接拷贝一段我试验过的一段代码
Note:
wordcloud支持两种标签云生成方式,针对不同的txt格式,其中
generate方法输入数据格式为字符串,直接输入文本流即可,实现原理可查看方法实现
fit_words方法输入数据,已经对数据进行了处理,比如格式为
【下载】msyh.tff
https://www.zhihu.com/question/28975391
纯文字标签云
图片叠加效果标签云
从两张图的对比来看,标签云的效果比表格形象,用户更加容易理解,并带有一些小心思的创新。
目前,python + wordcloud实现标签云效果的教程很多,但由于机子的配置等一些问题,还是趟了一些坑,做下记录,供查询。
简要流程
系统配置:Ubuntu 14.04, Python 2.7
安装python插件
sudo apt-get install python-tk
注意:一定要提前安装该插件,不然会出现报错
错误:wordcloud no display name and no $DISPLAY environment variable
主要原因是matplotlib插件中plt.imshow(wordcloud)中默认backend设置为Agg,而改GUI无法加载图片, 修改/etc/matplotlibrc
backend : TkAgg
sudo apt-get install python-numpy
sudo apt-get install python-matplotlib
运行事例代码
这里就不赘述,直接拷贝一段我试验过的一段代码
from wordcloud import WordCloud import PIL import matplotlib import matplotlib.pyplot as plt import numpy as np ### Note:Following 3 lines are for the problem of Chinese Font display ### from pylab import mpl mpl.rcParams['font.sans-serif'] = ['SimHei'] mpl.rcParams['axes.unicode_minus'] = False def wordcloudplot(txt): ### Note:一定要加上以下三行代码。 最早把这三行注释掉,ubuntu系统缺少matplotlib支持中文字体 生成的标签云中文显示为口,查了很多材料,都没有明确说明这个问题 最好加上这三行,或者自己添加为自己喜欢的字体!!! ### path='msyh.ttf' path=unicode(path, 'utf8').encode('gb18030') alice_mask = np.array(PIL.Image.open('air.jpg')) wordcloud = WordCloud(font_path=path, background_color="white", margin=5, width=1800, height=800, mask=alice_mask, max_words=2000, max_font_size=60, random_state=42) #wordcloud = wordcloud.generate(txt) wordcloud = wordcloud.fit_words(txt) wordcloud.to_file('output.png') plt.imshow(wordcloud) plt.axis("off") plt.show() def main(): a=[] f=open(r'android.txt','r').readlines() for line in f: tempArr = line.strip()split(" ") tempArr[0] = tempArr[0].decode("utf-8") tempArr[1] = int(tempArr[1]) a.append(tempArr) wordcloudplot(a) if __name__=='__main__': main()
Note:
wordcloud支持两种标签云生成方式,针对不同的txt格式,其中
generate方法输入数据格式为字符串,直接输入文本流即可,实现原理可查看方法实现
txt = open("test.txt",'r').readlines()
fit_words方法输入数据,已经对数据进行了处理,比如格式为
txt = [(u'空气龙',50000),(u'出行地图',4000),(u'社区PK',609029),...]
参考链接:
个人网站【下载】msyh.tff
https://www.zhihu.com/question/28975391
相关文章推荐
- Python实现中文词云(wordcloud),根据背景图片生成词云
- Python实现微信好友签名词云的构建(itchat、jieba、wordcloud)
- 鼠标拖动层(可任意绑定DIV标签)(实现方法二)
- 鼠标拖动层(可任意绑定DIV标签)(实现方法一)
- 正则提取出HTML正文(剔除标签内容)python实现
- python实现在windows下操作word的方法
- python实现登陆知乎获得个人收藏并保存为word文件
- fck_editor 不采用正则表达式实现插入任意自定义图片标签的解决方法
- Python实现批量读取word中表格信息的方法
- wordcloud----canvas 绘制标签云/词云web版wordle(二)
- wordcloud----canvas 绘制标签云/词云web版wordle(一)
- Python实现批量将word转html并将html内容发布至网站的方法
- 鼠标拖动层(可任意绑定DIV标签)的两种实现方法
- python实现word图片文字分离
- Word Cloud Python
- Python 实现类似PHP的strip_tags函数功能,并且可以自定义设置保留标签(一)
- 在Delphi中实现任意形状的窗体
- Python通过win32实现office自动化 - Word
- 教您用CSS的鼠标手势实现任意标签鼠标划过变成小手
- Python+Hadoop Streaming实现MapReduce(word count)