词云这玩意儿想必大伙儿都不陌生,就是那种由各种大小不一的词组成的图片。看着挺酷,做起来也不难。今天咱就来聊聊怎么用 Python 的 WordCloud 库来整这么一出。
1.
安装那些事儿
首先得把 WordCloud 装上,这个简单,一行代码的事:
pip install wordcloud
要是遇到啥问题,多半是你 Python 版本不对付。WordCloud 需要 Python 3.6 及以上版本。要是还不行,可能得先装个 numpy 和 pillow。
2.
基本用法
来看看最基本的用法:
from wordcloud import WordCloudimport matplotlib.pyplot as plt# 准备文本text = “Python 是最好的编程语言 Python 真棒 Python 简单易学 Python 功能强大”# 生成词云wordcloud = WordCloud().generate(text)# 显示词云图plt.imshow(wordcloud, interpolation='bilinear')plt.axis(“off”)plt.show()
这段代码会生成一个简单的词云图。WordCloud() 创建了一个词云对象,generate() 方法接收文本并生成词云。然后用 matplotlib 把它画出来。
温馨提示:要是你没装 matplotlib,得先 pip install matplotlib。
3.
自定义样式
光是黑白的有点无聊?来,咱给它加点料:
这回咱设置了词云的宽高、背景色和最小字体大小。效果立马就不一样了。
4.
使用中文
用英文太 low 了?来整点中文:
from wordcloud import WordCloudimport matplotlib.pyplot as pltimport jieba# 准备中文文本text = “Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。Python由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年。”# 结巴分词words = jieba.cut(text)new_text = “ ”.join(words)# 指定中文字体,不然会乱码font_path = “C:/Windows/Fonts/simhei.ttf” # 黑体wordcloud = WordCloud(width=800, height=400, background_color='white', font_path=font_path, min_font_size=10).generate(new_text)plt.figure(figsize=(8, 4))plt.imshow(wordcloud, interpolation=“bilinear”)plt.axis(“off”)plt.tight_layout(pad=0)plt.show()
这里用了结巴分词,因为中文不像英文那样天然有空格分隔。记得先 pip install jieba。
还有就是中文字体的问题,得指定一个支持中文的字体文件路径,不然就成火星文了。
5.
自定义词频
有时候,你可能想自己控制每个词出现的频率:
from wordcloud import WordCloudimport matplotlib.pyplot as plt# 自定义词频字典frequencies = { “Python”:100, “编程”:70, “人工智能”:65, “数据科学”:60, “机器学习”:55, “深度学习”:50, “网络爬虫”:45, “数据分析”:40, “Web开发”:35, “游戏开发”:30}wordcloud = WordCloud(width=800, height=400, background_color='white', min_font_size=10).generate_from_frequencies(frequencies)plt.figure(figsize=(8, 4))plt.imshow(wordcloud, interpolation=“bilinear”)plt.axis(“off”)plt.tight_layout(pad=0)plt.show()
这里用 generate_from_frequencies() 方法,直接传入一个词频字典。这样你就能完全控制每个词的权重了。
6.
自定义形状
要是想让词云按特定形状显示,也不是问题:
from wordcloud import WordCloudimport matplotlib.pyplot as pltimport numpy as npfrom PIL import Image# 准备文本text = “Python 是最好的编程语言 Python 真棒 Python 简单易学 Python 功能强大”# 读取遮罩图片mask = np.array(Image.open(“python_logo.png”))wordcloud = WordCloud(width=800, height=400, background_color='white', mask=mask, contour_width=3, contour_color='steelblue').generate(text)plt.figure(figsize=(8, 4))plt.imshow(wordcloud, interpolation=“bilinear”)plt.axis(“off”)plt.tight_layout(pad=0)plt.show()
这里用了一张 Python logo 的图片作为遮罩。词云会按照这个形状来生成。contour_width 和 contour_color用来给整个形状加个边框,看着更有feel。
词云这东西真是又好玩又实用。可以用来做数据可视化,也可以用来做些有意思的图片。多琢磨琢磨,没准儿还能整出更多花样来。要是觉得哪儿不对劲儿,就自个儿试试看,实践出真知嘛!
领取专属 10元无门槛券
私享最新 技术干货