首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

WordCloud,词云生成神器!

词云这玩意儿想必大伙儿都不陌生,就是那种由各种大小不一的词组成的图片。看着挺酷,做起来也不难。今天咱就来聊聊怎么用 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。

词云这东西真是又好玩又实用。可以用来做数据可视化,也可以用来做些有意思的图片。多琢磨琢磨,没准儿还能整出更多花样来。要是觉得哪儿不对劲儿,就自个儿试试看,实践出真知嘛!

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OhyG65r56BlggpY7uV7pspSw0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券