Python数据可视化 Pyecharts 制作 WordCloud 词云图
词云图借助生动的画面直观地呈现了文本数据中词汇频率的程度与分布情况;当词汇频率越强时,在图表中对应的字体面积会相应地变得更大。
该文章阐述了如何利用PyECharts库中的WordCloud组件生成自定义化的词云图表,并详细说明了通过一系列配置参数来完成图表的个性化设置。该WordCloud组件集成了多种自定义功能选项,在此基础之上用户可以根据具体需求灵活设置文字布局形式、字体样式选择以及颜色搭配等细节。
文章目录
- WordCloud:词云图
- Demo
- 总结
WordCloud:词云图
常见的可视化工具是WordCloud。它通过将词语以不同大小和方向呈现的方式,在图表上直观地展现文本数据中词语频率的空间分布特征。基于Pyecharts库开发的WordCloud类功能能够生成专业的词云图表;研究人员可通过丰富的配置参数设置来优化调整其形状、大小以及色彩等关键属性。
class WordCloud(
# 初始化配置项,参考 `global_options.InitOpts`
init_opts: opts.InitOpts = opts.InitOpts()
)
代码解读
坐标轴设置
词云图的配置设置提供了全面的自定义选项以调节各项属性。通过设定系列名称以及数据对来明确词云的数据来源,并进一步可以通过轮廓形状或自定义遮罩图片来塑造整体视觉效果。其他参数设置包括单词间隔、字体大小范围以及旋转角度等因素,这些参数帮助用户更为细致地优化视觉表现效果。外部布局参数则决定了词云图在画布中的具体位置和尺寸设置。文本样式配置则提供了高度量化的阴影效果调节选项,并显著提升了整个词云图的信息传达能力和视觉吸引力。
| 参数 | 说明 |
|---|---|
series_name |
系列名称,用于提示工具和图例筛选。 |
data_pair |
包含单词和计数的元组序列。 |
shape |
词云图轮廓形状,默认为圆形。 |
mask_image |
自定义遮罩图片,可以是base64编码或本地文件路径。 |
word_gap |
单词之间的间隔,默认为20。 |
word_size_range |
单词字体大小范围。 |
rotate_step |
单词旋转角度,默认为45度。 |
pos_left |
词云图距离画布左边的距离。 |
pos_top |
词云图距离画布上边的距离。 |
pos_right |
词云图距离画布右边的距离。 |
pos_bottom |
词云图距离画布底边的距离。 |
width 和 height |
词云图的宽度和高度。 |
is_draw_out_of_bound |
是否允许数据展示在画布范围之外,默认为否。 |
tooltip_opts |
提示框组件的配置项。 |
textstyle_opts |
词云图文本的样式配置。 |
emphasis_shadow_blur |
文本阴影的模糊范围。 |
emphasis_shadow_color |
文本阴影的颜色。 |
Demo
自定义样式词云图
此代码生成了一种带有个性化样式设计的词云图,在图形界面中可自由调节显示效果与布局参数设置
实例化WordCloud()类生成了一个词云图对象c$。 该工具的核心功能在于以不同字体大小、颜色和排列展示一组关键词及其对应的权重值。 调用.add()方法将一系列关键词及其权重值添加到词云对象中。 数据存储于名为words的列表中,其中包含了一系列关键词及其对应的数值参数,这些参数决定了每个关键词的字体大小设置。 此外,还可以指定为'草体'等其他书写风格作为默认字体样式,并通过word_size_range=[0,100]限定最大和最小字体尺寸比例。 可以通过.mask_image参数指定一个自定义的背景形状图像,这里选择了名为'data/dog.png'的图片作为背景模板,从而实现关键词按照图像轮廓进行布局显示。 如果不指定背景形状,则默认采用圆形或其他默认样式进行关键词排列。 调用.set_global_opts()方法可以进一步定制整个词云图的整体显示效果,包括设定标题等高级样式选项。 最后通过.render_notebook()`方法将最终生成的图像在当前Jupyter Notebook环境中进行渲染输出
from pyecharts import options as opts
from pyecharts.charts import WordCloud
from pyecharts.globals import SymbolType
words = [
("花鸟市场", 1446),
("汽车", 928),
("视频", 906),
("电视", 825),
("Lover Boy 88", 514),
("动漫", 486),
("音乐", 53),
("直播", 163),
("广播电台", 86),
("戏曲曲艺", 17),
("演出票务", 6),
("给陌生的你听", 1),
("资讯", 1437),
("商业财经", 422),
("娱乐八卦", 353),
("军事", 331),
("科技资讯", 313),
("社会时政", 307),
("时尚", 43),
("网络奇闻", 15),
("旅游出行", 438),
("景点类型", 957),
("国内游", 927),
("远途出行方式", 908),
("酒店", 693),
("关注景点", 611),
("旅游网站偏好", 512),
("出国游", 382),
("交通票务", 312),
("旅游方式", 187),
("旅游主题", 163),
("港澳台", 104),
("本地周边游", 3),
("小卖家", 1331),
("全日制学校", 941),
("基础教育科目", 585),
("考试培训", 473),
("语言学习", 358),
("留学", 246),
("K12课程培训", 207),
("艺术培训", 194),
("技能培训", 104),
("IT培训", 87),
("高等教育专业", 63),
("家教", 48),
("体育培训", 23),
("职场培训", 5),
("金融财经", 1328),
("银行", 765),
("股票", 452),
("保险", 415),
("贷款", 253),
("基金", 211),
("信用卡", 180),
("外汇", 138),
("P2P", 116),
("贵金属", 98),
("债券", 93),
("网络理财", 92),
("信托", 90),
("征信", 76),
("期货", 76),
("公积金", 40),
("银行理财", 36),
("银行业务", 30),
("典当", 7),
("海外置业", 1),
("汽车", 1309),
("汽车档次", 965),
("汽车品牌", 900),
("汽车车型", 727),
("购车阶段", 461),
("二手车", 309),
("汽车美容", 260),
("新能源汽车", 173),
("汽车维修", 155),
("租车服务", 136),
("车展", 121),
("违章查询", 76),
("汽车改装", 62),
("汽车用品", 37),
("路况查询", 32),
("汽车保险", 28),
("陪驾代驾", 4),
("网络购物", 1275),
("做我的猫", 1088),
("只想要你知道", 907),
("团购", 837),
("比价", 201),
("海淘", 195),
("移动APP购物", 179),
("支付方式", 119),
("代购", 43),
("体育健身", 1234),
("体育赛事项目", 802),
("运动项目", 405),
("体育类赛事", 337),
("健身项目", 199),
("健身房健身", 78),
("运动健身", 77),
("家庭健身", 36),
("健身器械", 29),
("办公室健身", 3),
("商务服务", 1201),
("法律咨询", 508),
("化工材料", 147),
("广告服务", 125),
("会计审计", 115),
("人员招聘", 101),
("印刷打印", 66),
("知识产权", 32),
("翻译", 22),
("安全安保", 9),
("公关服务", 8),
("商旅服务", 2),
("展会服务", 2),
("特许经营", 1),
("休闲爱好", 1169),
("收藏", 412),
("摄影", 393),
("温泉", 230),
("博彩彩票", 211),
("美术", 207),
("书法", 139),
("DIY手工", 75),
("舞蹈", 23),
("钓鱼", 21),
("棋牌桌游", 17),
("KTV", 6),
("密室", 5),
("采摘", 4),
("电玩", 1),
("真人CS", 1),
("轰趴", 1),
("家电数码", 1111),
("手机", 885),
("电脑", 543),
("大家电", 321),
("家电关注品牌", 253),
("网络设备", 162),
("摄影器材", 149),
("影音设备", 133),
("办公数码设备", 113),
("生活电器", 67),
("厨房电器", 54),
("智能设备", 45),
("个人护理电器", 22),
("服饰鞋包", 1047),
("服装", 566),
("饰品", 289),
("鞋", 184),
("箱包", 168),
("奢侈品", 137),
("母婴亲子", 1041),
("孕婴保健", 505),
("母婴社区", 299),
("早教", 103),
("奶粉辅食", 66),
("童车童床", 41),
("关注品牌", 271),
("宝宝玩乐", 30),
("母婴护理服务", 25),
("纸尿裤湿巾", 16),
("妈妈用品", 15),
("宝宝起名", 12),
("童装童鞋", 9),
("胎教", 8),
("宝宝安全", 1),
("宝宝洗护用品", 1),
("软件应用", 1018),
("系统工具", 896),
("理财购物", 440),
("生活实用", 365),
("影音图像", 256),
("社交通讯", 214),
("手机美化", 39),
("办公学习", 28),
("应用市场", 23),
("母婴育儿", 14),
("游戏", 946),
("手机游戏", 565),
("PC游戏", 353),
("网页游戏", 254),
("游戏机", 188),
("模拟辅助", 166),
("个护美容", 942),
("护肤品", 177),
("彩妆", 133),
("美发", 80),
("香水", 50),
("个人护理", 46),
("美甲", 26),
("SPA美体", 21),
("花鸟萌宠", 914),
("绿植花卉", 311),
("狗", 257),
("其他宠物", 131),
("水族", 125),
("猫", 122),
("动物", 81),
("鸟", 67),
("宠物用品", 41),
("宠物服务", 26),
("书籍阅读", 913),
("网络小说", 483),
("关注书籍", 128),
("文学", 105),
("报刊杂志", 77),
("人文社科", 22),
("建材家居", 907),
("装修建材", 644),
("家具", 273),
("家居风格", 187),
("家居家装关注品牌", 140),
("家纺", 107),
("厨具", 47),
("灯具", 43),
("家居饰品", 29),
("家居日常用品", 10),
("生活服务", 883),
("物流配送", 536),
("家政服务", 108),
("摄影服务", 49),
("搬家服务", 38),
("物业维修", 37),
("婚庆服务", 24),
("二手回收", 24),
("鲜花配送", 3),
("维修服务", 3),
("殡葬服务", 1),
("求职创业", 874),
("创业", 363),
("目标职位", 162),
("目标行业", 50),
("兼职", 21),
("期望年薪", 20),
("实习", 16),
("雇主类型", 10),
("星座运势", 789),
("星座", 316),
("算命", 303),
("解梦", 196),
("风水", 93),
("面相分析", 47),
("手相", 32),
("公益", 90),
]
c = (
WordCloud()
.add(
"",
words,
word_size_range=[0, 100],
textstyle_opts=opts.TextStyleOpts(font_family="cursive"), # 设置字体
mask_image='data/dog.png'
# shape=SymbolType.ARROW, # 箭头形
# shape=SymbolType.DIAMOND, # 钻石形
# shape=SymbolType.RECT, # 矩形
# shape=SymbolType.ROUND_RECT, # 边缘圆滑矩形
# shape=SymbolType.TRIANGLE, # 三角形
)
.set_global_opts(
title_opts=opts.TitleOpts(title="自定义样式词云图"),
)
# .render("自定义样式词云图.html")
)
c.render_notebook()
代码解读


总结
通过示例代码片段,本文演示了制作自定义样式的词云图的方法。这些示例中,默认的权重设置生成了基于指定词汇的不同大小和颜色排列的词云图。此外,在这些默认情况下,默认情况下是白色方块,默认情况下会将单词排列为方形网格布局。此外,在这些默认情况下,默认情况下会将单词排列为方形网格布局。此外,在这些默认情况下,默认情况下会将单词排列为方形网格布局。
词云图被广泛应用在文本数据分析与展示领域,并特别在社交媒体话题分析、用户评论以及关键词研究等多个方面发挥重要作用。通过词云图的帮助,用户能够更好地掌握文本数据的主要内容及重点方向。
