您的位置:首页 > 编程语言 > Python开发

Python8-10行代码生成任意形状的文字云图

2017-08-25 14:47 211 查看
一年一季的七夕就要到了,是时候展示我们程序猿的神技了!

今天用python3做了一下文字云图,有英文和中文两类。中文云图的生成需要文本切分,所以先给大家介绍中文云图。

大致步骤:

1、安装jieba



我尝试很多次的全自动安装,都失败了,所以只好去官网下载zip包,然后开始半自动安装。下载速度可是真慢!也许你的电脑比较给力。

大家选择合适自己的方式安装吧,祝大家好运。

测试:

import jieba
2、安装wordcloud

在这个网址下下载对应版本的.whl文件

http://www.lfd.uci.edu/~gohlke/pythonlibs/



对照自己安装的Python版本下载就行了,然后在文件所在目录下pipinstall 完整文件名.whl即可。不清楚怎么操作的,可以参见我之前的博客。辛苦大家往回找找,在这里我就不废话了。

3、码code

中文云图--

思路:先运用jieba分词对文章进行切分,同时读取背景的图片(用于绘制不同形状的文字云图),然后通过wordcloud生成文字云图并用画图工具展示。切记,汉字字体(.ttf)的路径一定要写全。不然后报错。当然你也可以去下载一些比较可爱的字体!

#路径模块
from os import path
#读取背景图片
from scipy.misc import imread
#分词模块
import jieba
#绘图模块
import matplotlib.pyplot as plt
#文字云模块
from wordcloud import WordCloud,ImageColorGenerator

#读取完整txt
d=path.dirname('.')
#读取完整txt
text=open(path.join(d,'word1.txt')).read()
cut_text=" ".join(jieba.cut(text))
#print(cut_text)
#设置背景图片
color_mask=imread(path.join(d,'1314.jpg'))
#背景颜色,显示最多词数,设置背景图片,字体最大值,一定要把字体的完整路径写上
wc=WordCloud(font_path='C:\\Windows\\Fonts\\simkai.ttf',background_color='white',mask=color_mask,max_words=1000,max_font_size=1200)
#生成词云
word_cloud=wc.generate(cut_text)
image_colors=ImageColorGenerator(color_mask)
plt.imshow(wc.recolor(color_func=image_colors),interpolation='bilinear')
plt.axis('off')
plt.show()英文词云:
from os import path
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
from wordcloud import WordCloud,STOPWORDS,ImageColorGenerator
#获取当前文件路径
d=path.dirname('.')
#读取完整txt
text=open(path.join(d,'word.txt')).read()

#设置背景图片
alice_coloring=np.array(Image.open(path.join(d,'103.jpg')))
stopwords=set(STOPWORDS)
stopwords.add('said')
#背景颜色,显示最多词数,设置背景图片,字体最大值
wc=WordCloud(background_color='white',max_words=1000,mask=alice_coloring,stopwords=stopwords,max_font_size=500)
#生成词云
wc.generate(text)
image_colors=ImageColorGenerator(alice_coloring)
plt.imshow(wc,interpolation='bilinear')
plt.axis('off')
#绘制词云图
plt.figure()
plt.imshow(wc.recolor(color_func=image_colors),interpolation='bilinear')
plt.axis('off')
plt.figure()
plt.imshow(alice_coloring,cmap=plt.cm.gray,interpolation='bilinear')
plt.axis('off')
plt.show()祝大家顺利!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python 文字云图