网上教你做信息图教程很多。许多都是利用了专用工具。这些工具好是好,便捷而强大。只是它们功能都太过专一,适用范围有限。今天我们要尝试的,是用通用的编程语言Python来做词云。
如果你之前没有编程基础,没关系,从零开始,意味着我会教你如何安装Python运行环境,一步步完成词云图。希望你不要限于浏览,而是亲自动手尝试一番。到完成的那一步,你不仅可以做出第一张词云图,而且这还将是你的第一个有用的编程作品。
开始之前,你需要安装:
pip install wordcloud
词云分析对象,是文本。为了简便,我们这里以英文文本为例。
In [1]:
# 读取英文文本内容
filename = "wordcloud.txt"
mytext = open(filename).read()
print(mytext[0:99]) #全部 print 出来太多了
In [2]:
# 呼唤(import)词云包,利用mytext中存储的文本内容来制造词云。
from wordcloud import WordCloud
wordcloud = WordCloud().generate(mytext)
# 此时词云分析已经完成了。
%pylab inline
import matplotlib.pyplot as plt
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")
Out[2]:
In [10]:
# 英文文本不够给力?来段中文的 PS:难度大一点,来段古文:增广贤文
filename = "wordcloudChinese.txt"
mytext = open(filename).read()
print("先预览一下古文头几句: "+mytext[0:99])
# 注意,由于英文词与词自带空格作为分隔符,相比于中文分词要简单的多。我们在做中文分词时,需要把词语从一整段话中筛出来,困难之处在于,汉语表达博大精深,一段话往往有不同的切分方法。
# 所幸这不是我们需要担心的,Python中的Jieba库提供了现成的解决方案:
import jieba
result=" ".join(jieba.cut(mytext))
# jiaba调用了自己的分词算法,将切分好的文本按逗号分隔符分开,得到下面结果
print("切分结果: "+result[0:99])
In [11]:
# 做好了中文分词,下一步即是绘制云词图了。这里我们使用了另一个比较强大的库WordCloud。
from wordcloud import WordCloud
wordcloud = WordCloud(
background_color="white", #背景颜色
max_words=200, #显示最大词数
font_path=r"C:\Windows\Fonts\FZYTK.TTF", #使用字体
).generate(result)
%pylab inline
import matplotlib.pyplot as plt
plt.imshow(wordcloud)
plt.axis("off")
Out[11]: