首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用Python构建词云

构建词云的方法很多,但是个人觉得python的wordcloud包功能最为强大,可以自定义图片.

原图:

环境:

Python3.6版本

安装

需要安装的模块如下:

scipy

matplotlib

wordcloud

参考下图安装

之后在IDE中创建new Python Project

本案例使用的字体Xingkai.ttc

请自行下载后复制到工程中

代码实现

#coding:utf-8

fromosimportpath

fromscipy.miscimportimread

importmatplotlib.pyplotasplt

fromwordcloudimportWordCloud, STOPWORDS, ImageColorGenerator

#获取当前文件路径

# __file__为当前文件,在ide中运行此行会报错,可改为

# d = path.dirname('.')

d = path.dirname(__file__)

#读取文本alice.txt

#内容为

text =open(path.join(d,'/Users/PycharmProjects/untitled4/文本.txt')).read()

# read the mask / color image

# taken from http://jirkavinse.deviantart.com/art/quot-Real-Life-quot-Alice-282261010

#设置背景图片

alice_coloring = imread(path.join(d,"/Users/PycharmProjects/untitled4/粉红色.jpg"))

#背景颜色max_words=2000,#词云显示的最大词数

wc = WordCloud(background_color="white",

mask=alice_coloring,#设置背景图片

stopwords=STOPWORDS.add("said"),

max_font_size=40,#字体最大值

#设置字体格式,如不设置显示不了中文

font_path=r"/Users/PycharmProjects/untitled4/Xingkai.ttc",

random_state=42)

#生成词云,可以用generate输入全部文本(中文不好分词),也可以我们计算好词频后使用generate_from_frequencies函数

wc.generate(text)

# wc.generate_from_frequencies(txt_freq)

# txt_freq例子为[('词a', 100),('词b', 90),('词c', 80)]

#从背景图片生成颜色值

image_colors = ImageColorGenerator(alice_coloring)

#以下代码显示图片

plt.imshow(wc)

plt.axis("off")

#绘制词云

plt.figure()

# recolor wordcloud and show

# we could also give color_func=image_colors directly in the constructor

plt.imshow(wc.recolor(color_func=image_colors))

plt.axis("off")

#绘制背景图片为颜色的图片

plt.figure()

plt.imshow(alice_coloring,cmap=plt.cm.gray)

plt.axis("off")

plt.show()

#保存图片

wc.to_file(path.join(d,"词云.png"))

注:本案例为测试案例,一些图片与字体大家可以自己下载喜欢的,

最好将下载好的字体与图片放在当前目录中,注意修改路径。

运行生成词云:

第二种方式生成词云:

环境:python3.6

所需模块:

matplotlib

wordcloud

jieba

numpy

PIL

原图:

第二种方式代码实现

#coding:utf-8

importmatplotlib.pyplotasplt

fromwordcloudimportWordCloud,ImageColorGenerator,STOPWORDS

importjieba

importnumpyasnp

fromPILimportImage

#读入背景图片

abel_mask =np.array(Image.open("/Users /PycharmProjects/untitled4 /图片.jpg"))

#读取要生成词云的文件

text_from_file_with_apath=open('/Users /PycharmProjects/untitled4 /文本.txt').read()

#通过jieba分词进行分词并通过空格分隔

wordlist_after_jieba= jieba.cut(text_from_file_with_apath,cut_all=True)

wl_space_split ="".join(wordlist_after_jieba)

#my_wordcloud =WordCloud().generate(wl_space_split)默认构造函数

my_wordcloud =WordCloud(

#设置背景颜色

background_color='white',

mask= abel_mask,#设置背景图片

max_words=200,#设置最大现实的字数

stopwords= STOPWORDS,#设置停用词

#设置字体格式,如不设置显示不了中文

font_path=r"/Users /PycharmProjects/untitled4/Xingkai.ttc",

max_font_size=50,#设置字体最大值

random_state=30,#设置有多少种随机生成状态,即有多少种配色方案

scale=.5

).generate(wl_space_split)

#根据图片生成词云颜色

image_colors =ImageColorGenerator(abel_mask)

my_wordcloud.recolor(color_func=image_colors)

#以下代码显示图片

plt.imshow(my_wordcloud)

plt.axis("off")

plt.show()

结果图:

欢迎分享,更多内容请关注

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20171218G00R0100?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券