用wordcloud做一张简单词云图

Posted truedragon

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用wordcloud做一张简单词云图相关的知识,希望对你有一定的参考价值。

第一步,生成一张最简单的词云图

1 from wordcloud import WordCloud
2 import matplotlib.pyplot as plt
3 #读取一个文本
4 txt = open(1.txt,encoding=utf-8).read()
5 #创建一个wordcloud对象
6 wc = WordCloud().generate(txt)
7 plt.imshow(wc)
8 plt.axis("off")#影藏坐标
9 plt.show()#将图片展示出来

技术图片

 

 Ctrl点击WordCloud()查看源代码

技术图片

 

 可以看到,里面有很多参数可以使用

这里我们用几个常用的

wc = WordCloud(background_color=white,scale=2,width=400,height=600,max_words=200,mask=None).generate(txt)

分别为设置背景色,scale可以理解为清晰度,越大图片越清晰,处理时间越长,width和height设置宽高,mask代表蒙版,也可以理解为贴图,我们后面会用到

运行结果如图

技术图片

 

接下来我们来尝试制作中文的词云图,wordcloud默认是不支持中文的,所有我们需要导入中文字体,否在会出现乱码

这时,我们在wordcloud中加入font_path="你字体的路径" 就可以解决    找不到就网上下一个

技术图片技术图片

 

 当然这个是我本身就已经分词分好了的情况,不然我们得用jieba库来分词,也很简单,加一段这个

1 word = jieba.lcut(text)
2 text =‘‘.join(word)

这样的词云图看上去还是很low对吧,这时我们需要用图片来生成好看的词云图

 1 rom wordcloud import WordCloud
 2 import matplotlib.pyplot as plt
 3 from PIL import Image
 4 import numpy as np
 5 #读取一个文本
 6 text = open(1.txt,encoding=utf-8).read()
 7 #创建一个wordcloud对象
 8 image = np.array(Image.open("ai.png"))
 9 wc = WordCloud(font_path="字体.ttc",#设置字体,默认不支持中文
10                background_color=white,#设置背景色为空时背景透明色
11                # max_font_size=400, #最大字号
12                # min_font_size=100,#最小字号
13                max_words=3000,#最大词数
14                mask=image,
15                scale=2,
16                width=800,
17                height=500,#如果mask非空,则width和height将被忽略
18                #random_state=10#设置随机数
19                ).generate(text=text)
20 plt.imshow(wc)
21 plt.axis("off")#影藏坐标
22 #wc.to_file("wc.png")#保存图片
23 plt.show()

技术图片                                        技术图片

 

 有几个坑讲一下吧,文本格式看清楚是什么有可能是ANSI等,那就相应改一下,保存的话用to_file()清晰度会好一些

 

以上是关于用wordcloud做一张简单词云图的主要内容,如果未能解决你的问题,请参考以下文章

用Python绘制了若干张词云图,惊艳了所有人

Echart 词云图 上手代码 同含(echarts-wordcloud.js)最简单的教程 复制可用

python绘制WordCloud词云图

有txt文本和图片,就能用python生成词云图

词云wordcloud类介绍&python制作词云图&词云图乱码问题等小坑

用 Python 绘制了若干张词云图,惊艳了所有人