词云图是一种展示方式,虽然在绝对值上没办法给出太多信息,但是能给人比较强的视觉感受。
这个东西主要是好玩。
个人在原作者的基础上稍微修改了一点,以满足自己的环境。代码来源如下:
作者:挖数
链接:https://www.zhihu.com/question/28975391/answer/100796070
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处
from wordcloud import WordCloud
import jieba
import PIL
import matplotlib.pyplot as plt
import numpy as np
def wordcloudplot(txt):
path = r'D:/wordcloud/msyh.ttf'
alice_mask = np.array(PIL.Image.open('D:/wordcloud/dora.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.to_file('D:/wordcloud/dora.jpg')
plt.imshow(wordcloud)
plt.axis("off")
plt.show()
def main():
a = []
f = open(r'D:/wordcloud/tlbb.txt', 'r',encoding='utf-8').read()
words = list(jieba.cut(f))
for word in words:
if len(word) > 1:
a.append(word)
txt = r' '.join(a)
wordcloudplot(txt)
if __name__ == '__main__':
main()
个人感受有以下几点:
1、用来画图的词要达到一定程度,如果只有几个的话,出不来图的轮廓。
2、jieba是用来做分词的,不是必须的,但是鉴于1,直接手打词会比较累。
3、图片的对比度也很重要,想要效果好,需要图片的轮廓和北京的对比度足够强。