Pyecharts 词云图语法
词云图,指的是使用视觉来突出频率较高的 “关键词”,然后过滤无用的文本信息,这样用户扫一眼词云图就知道文本的重点是什么了。
在 Pyecharts 中,我们可以使用 WordCloud 这个模块来生成一个词云图。
语法:
cloud = WordCloud()
cloud.add(series_name, data_pair)
说明:
对于词云图来说,它也是使用 add() 方法。参数 series_name 用于定义系列名,参数 data_pair 用于定义数据部分。
示例:Pyecharts 绘制词云图
from pyecharts.charts import WordCloud
# 数据
data = [
['红楼梦', 999],
['西游记', 988],
['水浒传', 976],
['三国演义', 975],
['史记', 955],
['资治通鉴', 945],
['二十四史', 935],
['战国策', 921],
['论语', 915],
['尚书', 871],
['周易', 868],
['道德经', 845],
['吕氏春秋', 831],
['春秋左氏传', 811],
['大学', 791],
['中庸', 777],
['孟子', 758],
['老子', 745],
['墨子', 717],
['山海经', 699],
['天工开物', 655],
['本草纲目', 578],
['梦溪笔谈', 537],
['奇门遁甲', 512],
['九章算术', 500],
['伤寒论', 487],
['海国图志', 462],
['世说新语', 417],
['金瓶梅', 408],
['东周列国志', 384],
['封神演义', 382],
['聊斋志异', 365],
['官场现形记', 347],
['二十年目睹之怪现状', 282],
['骆驼祥子', 255],
['阿Q正传', 250],
['狂人日记', 242],
['平凡的世界', 236],
['活着', 230],
['穆斯林的葬礼', 182],
['白鹿原', 73],
['红高粱', 65]
]
# 绘图
cloud = WordCloud()
cloud.add(
series_name='',
data_pair=data
)
# 渲染
cloud.render()
运行生成的 render.html,浏览器效果如下图所示。

分析:
对于 data_pair 这个参数来说,它的值要求是一个二维列表,列表每一项的第 1 个元素是文本,第 2 个元素是该文本出现的频率(次数)。下面 2 种方式都是可行的。
# 方式1
data = [
['红楼梦', 999],
['西游记', 988],
['水浒传', 976],
['三国演义', 975]
]
# 方式2
data = [
('红楼梦', 999),
('西游记', 988),
('水浒传', 976),
('三国演义', 975)
]
对于词云图来说,当鼠标移到某一项上面时,会显示该项对应的数据,如下图所示。

Pyecharts 词云图样式
在 Pyecharts 中,对于词云图的自定义样式,主要包括 2 个方面:① 词云形状;② 字体大小。
1. 词云形状
在 Pyecharts 中,我们可以使用 add() 方法的 shape 参数来定义词云图的形状。对于 shape 参数来说,它常用的取值如下表所示。
| 取值 | 说明 |
|---|---|
| circle | 圆形 |
| rect | 矩形 |
| triangle | 三角形 |
| pentagon | 五角形 |
| star | 星星形 |
| diamond | 钻石形 |
我们在原来的例子上使用 shape 这个参数,修改后的代码如下,此时效果如下图所示。
cloud.add(
series_name='',
data_pair=data,
shape='diamond'
)

实际上,shape 参数的几种取值效果并不明显。在实际开发中,我们只需要使用默认值就可以了。
2. 字体大小
在 Pyecharts 中,我们可以使用 add() 方法的 word_size_range 参数来定义词云图的字体大小范围。word_size_range 的值是一个列表,word_size_range=[m, n] 表示字体大小的范围为:m 像素 ~ n 像素。
我们在原来的例子上使用 word_size_range 这个参数,修改后的代码如下,此时效果如下图所示。
cloud.add(
series_name='',
data_pair=data,
word_size_range=[10, 50]
)

需要注意的是,word_size_range=[m, n] 中,m 和 n 的值不能太大也不能太小。当它们值太大时,文本就显示不完整了。比如 word_size_range=[10, 100] 时,效果如下图所示。

这一节只是给小伙伴们介绍一下词云图的基本使用。如果是在真正的商业产品中,我们还需要在设计层面上多多考虑,比如使用自定义的形状等,以便让产品的用户体验更好。
