怎么用Python画出好看的词云图
首先附上原微信推文https://mp.weixin.qq.com/s/WGmjY6q26tBGtRdrlfy2sQ
下面记录一下python作图做了一个学期依然是个菜鸡的一些操作:
**
1.导入库
**
import jieba
from wordcloud import WordCloud
import matplotlib.pyplot as plt
from PIL import Image
源代码缺少一句:
import numpy as np,代码运行会报错np is not define
导入库使用 npm install jieba(结巴是个什么鬼…)
**
2.导入库镜像加速(常见问题)
**
参考博文 https://blog.****.net/sunny_happy08/article/details/83113692
**
3.读取文件不成功
**
这里就要好好检查到底是文件结构有问题还是python默认读取文件的内容
本人使用spyder位置比较好找一些
**
4.文件读取编码问题
**
原代码:encoding=‘utf8’ txt文件中含有此编码标准无法读取的字符
解决:
encoding=‘unicode_escape’
**
5.ValueError: We need at least 1 word to plot a word cloud, got 0. 说明文件读取依然有问题,依然是编码问题
**
打开.txt文件—文件—另存为—选择编码(UTF-8)—替换原来的》txt文件就OK了。参考博文https://blog.****.net/xiaoyong5854/article/details/84572309
讲真的spyder真是使用过除了pycharm以外最好用的python作图工具,毕竟下载库什么的比较好搞?
先记录到这里,目前可以出一个初步的图,但是还有问题没有解决
完结:
最后的问题依然是文件编码读取,使用原代码的encoding=‘utf8’ ,**注意要保持txt文件读取方式与本代码读取方式的一致即可正确读取内容,详情参考博客https://blog.****.net/xiaoyong5854/article/details/84572309
源代码和效果图奉上:
`import jieba
from wordcloud import WordCloud
import matplotlib.pyplot as plt
from PIL import Image
import numpy as np
text = open("./shuju1.txt",encoding=‘utf8’).read()
text = text.replace(’\n’,"").replace("\u3000","")
text_cut = jieba.lcut(text)
text_cut = ’ '.join(text_cut)
stop_words = open(“C:/Users/MACHENIKE/Desktop/郑州/好看哒词云图/shuju1.txt”,encoding=‘utf8’).read().split("\n")
background = Image.open("./ditu.jpg")
graph = np.array(background)
word_cloud = WordCloud(font_path=“simsun.ttc”,
background_color=“white”,
mask=graph, # 指定词云的形状
stopwords=stop_words)
word_cloud.generate(text_cut)
plt.subplots(figsize=(12,8))
plt.imshow(word_cloud)
plt.axis(“off”)`
效果图: