Pyecharts 词云图

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,浏览器效果如下图所示。

pyecharts 词云图

分析:

对于 data_pair 这个参数来说,它的值要求是一个二维列表,列表每一项的第 1 个元素是文本,第 2 个元素是该文本出现的频率(次数)。下面 2 种方式都是可行的。

# 方式1
data = [
    ['红楼梦', 999],
    ['西游记', 988],
    ['水浒传', 976],
    ['三国演义', 975]
]

# 方式2
data = [
    ('红楼梦', 999),
    ('西游记', 988),
    ('水浒传', 976),
    ('三国演义', 975)
]

对于词云图来说,当鼠标移到某一项上面时,会显示该项对应的数据,如下图所示。

pyecharts 词云图的提示框

Pyecharts 词云图样式

在 Pyecharts 中,对于词云图的自定义样式,主要包括 2 个方面:① 词云形状;② 字体大小。

1. 词云形状

在 Pyecharts 中,我们可以使用 add() 方法的 shape 参数来定义词云图的形状。对于 shape 参数来说,它常用的取值如下表所示。

参数 shape 的取值
取值 说明
circle 圆形
rect 矩形
triangle 三角形
pentagon 五角形
star 星星形
diamond 钻石形

我们在原来的例子上使用 shape 这个参数,修改后的代码如下,此时效果如下图所示。

cloud.add(
    series_name='', 
    data_pair=data,
    shape='diamond'
)

pyecharts 词云图的形状

实际上,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]
)

pyecharts 词云图改变字体大小1

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

pyecharts 词云图改变字体大小2

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

上一篇: Pyecharts 日历图

下一篇: Pyecharts 地图

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号