文章目录
- 专栏导读
- 一、词云图介绍
- 1. 词云图是什么?
- 2. 词云图应用场景?
- 二、参数说明
- 1. 导包
- 2. add函数
- 三、词云库实战
- 1. 基础词云图
- 2. 矩形词云图
- 3. 三角形词云图
- 4. 菱形词云图
- 5. 自定义图片词云图
- 书籍推荐
专栏导读
🔥🔥本文已收录于《100天精通Python从入门到就业》:本专栏专门针对零基础和需要进阶提升的同学所准备的一套完整教学,从0到100的不断进阶深入,后续还有实战项目,轻松应对面试,专栏订阅地址:https://blog.csdn.net/yuan2019035055/category_11466020.html
- 优点:订阅限时9.9付费专栏进入千人全栈VIP答疑群,作者优先解答机会(代码指导、远程服务),群里大佬众多可以抱团取暖(大厂内推机会)
- 专栏福利:简历指导、招聘内推、每周送实体书、80G全栈学习视频、300本IT电子书:Python、Java、前端、大数据、数据库、算法、爬虫、数据分析、机器学习、面试题库等等
一、词云图介绍
1. 词云图是什么?
词云图是一种可视化工具,用于展示文本数据中出现频率较高的词汇。它通过将词汇按照其出现的频率和重要性进行排列和调整,将常见的词汇以较大的字体显示,而不常见的词汇则以较小的字体显示,从而形成一个视觉上有吸引力的图像。
2. 词云图应用场景?
词云图在各种领域都有广泛的应用场景,以下是一些常见的应用场景:
-
文本分析:词云图可以帮助研究人员和数据分析师快速了解文本数据的主题、关键词和重点内容,从而进行进一步的分析和洞察。
-
舆情监测:词云图可以用于对社交媒体、新闻报道、评论等大量文本数据进行舆情分析,帮助人们了解公众对某个话题或事件的关注点和情感倾向。
-
市场调研:词云图可以用于分析市场调研中的消费者评论、产品评价等文本数据,帮助企业了解消费者对产品的关注点、需求和满意度。
-
数据可视化:词云图可以作为数据可视化的一种形式,用于呈现文本数据中的词汇分布情况,使数据更加直观和易于理解。
-
主题分析:词云图可以帮助人们快速识别文本数据中的主题和关键词,有助于深入了解文本内容和进行主题分类。
-
教育与学术研究:词云图可以用于分析学术文献、教材、学生作文等文本数据,帮助教育工作者和研究人员了解文本的重点内容和关键词。
总的来说,词云图可以用于任何需要对文本数据进行快速分析和可视化展示的场景,帮助人们更好地理解和利用文本数据。
二、参数说明
1. 导包
from pyecharts import options as opts
from pyecharts.charts import WordCloud
2. add函数
def add(
self,
series_name: str, # 系列名称,用于标识词云图的数据系列
data_pair: types.Sequence, # 数据对,包含词汇和对应的权重值或频率
*,
shape: str = "circle", # 词云图的形状,默认为圆形
mask_image: types.Optional[str] = None, # 词云图的遮罩图片路径,用于指定词云图的形状
word_gap: types.Numeric = 20, # 词与词之间的间距,默认为20
word_size_range: types.Optional[types.Sequence] = None, # 词云图中词汇的字体大小范围
rotate_step: types.Numeric = 45, # 词汇旋转的步长,默认为45度
pos_left: types.Optional[str] = None, # 词云图的左侧位置
pos_top: types.Optional[str] = None, # 词云图的上方位置
pos_right: types.Optional[str] = None, # 词云图的右侧位置
pos_bottom: types.Optional[str] = None, # 词云图的下方位置
width: types.Optional[str] = None, # 词云图的宽度
height: types.Optional[str] = None, # 词云图的高度
is_draw_out_of_bound: bool = False, # 是否绘制超出指定区域的词汇,默认为False
tooltip_opts: types.Tooltip = None, # 提示框的配置项
itemstyle_opts: types.ItemStyle = None, # 词云图中词汇的样式配置项
textstyle_opts: types.TextStyle = None, # 词云图中文字的样式配置项
emphasis_shadow_blur: types.Optional[types.Numeric] = None, # 高亮时的阴影模糊大小
emphasis_shadow_color: types.Optional[str] = None, # 高亮时的阴影颜色
)
三、词云库实战
1. 基础词云图
from pyecharts import options as opts
from pyecharts.charts import WordCloud
# 准备词云图数据
data = [
("apple", 5),
("banana", 3),
("orange", 2),
("grape", 4),
("watermelon", 2),
]
# 使用链式写法绘制词云图
c = (
WordCloud()
.add("", data, word_size_range=[20, 100], shape="circle")
.set_global_opts(title_opts=opts.TitleOpts(title="基础词云图"))
)
# 渲染图表
c.render("基础词云图.html") # 将图表渲染为HTML文件
c.render_notebook() # 在Notebook中显示图表
运行结果:
2. 矩形词云图
使用from pyecharts.globals import SymbolType
可以绘制以下图形:
- RECT:矩形
- ROUND_RECT:圆棱角矩形
- TRIANGLE:三角形
- DIAMOND:菱形
- ARROW:箭头形
还有 ‘circle’, ‘cardioid’, ‘diamond’, ‘triangle-forward’, ‘triangle’, ‘pentagon’, ‘star’ 可选
注意:数据的长度和多少对于形状巨大影响,都是两字词语绘图更好看!
绘制矩形词云图将往add函数中添加shape=SymbolType.RECT
参数即可:
import pyecharts.options as opts
from pyecharts.charts import WordCloud
from pyecharts.globals import SymbolType
data = [
("生活资源", "999"),
("供热管理", "888"),
("供气质量", "777"),
("生活用水管理", "688"),
("一次供水问题", "588"),
("交通运输", "516"),
("城市交通", "515"),
("环境保护", "483"),
("房地产管理", "462"),
("城乡建设", "449"),
("社会保障与福利", "429"),
("社会保障", "407"),
("文体与教育管理", "406"),
("公共安全", "406"),
("公交运输管理", "386"),
("出租车运营管理", "385"),
("供热管理", "375"),
("市容环卫", "355"),
("自然资源管理", "355"),
("粉尘污染", "335"),
("噪声污染", "324"),
("土地资源管理", "304"),
("物业服务与管理", "304"),
("医疗卫生", "284"),
("粉煤灰污染", "284"),
("占道", "284"),
("供热发展", "254"),
("农村土地规划管理", "254"),
("生活噪音", "253"),
("供热单位影响", "253"),
("城市供电", "223"),
("房屋质量与安全", "223"),
("大气污染", "223"),
("房屋安全", "223"),
("文化活动", "223"),
("拆迁管理", "223"),
("公共设施", "223"),
("供气质量", "223"),
("供电管理", "223"),
("燃气管理", "152"),
("教育管理", "152"),
("医疗纠纷", "152"),
("执法监督", "152"),
("设备安全", "152"),
("政务建设", "152"),
("县区、开发区", "152"),
("宏观经济", "152"),
("教育管理", "112"),
("社会保障", "112"),
("生活用水管理", "112"),
("物业服务与管理", "112"),
("分类列表", "112"),
("农业生产", "112"),
("二次供水问题", "112"),
("城市公共设施", "92"),
("拆迁政策咨询", "92"),
("物业服务", "92"),
("物业管理", "92"),
("社会保障保险管理", "92"),
("低保管理", "92"),
("文娱市场管理", "72"),
("城市交通秩序管理", "72"),
("执法争议", "72"),
("商业烟尘污染", "72"),
("占道堆放", "71"),
("地上设施", "71"),
("水质", "71"),
("无水", "71"),
("供热单位影响", "71"),
("人行道管理", "71"),
("主网原因", "71"),
("集中供热", "71"),
("客运管理", "71"),
("国有公交(大巴)管理", "71"),
("工业粉尘污染", "71"),
("治安案件", "71"),
("压力容器安全", "71"),
("身份证管理", "71"),
("群众健身", "41"),
("工业排放污染", "41"),
("破坏森林资源", "41"),
("市场收费", "41"),
("生产资金", "41"),
("生产噪声", "41"),
("农村低保", "41"),
("劳动争议", "41"),
("劳动合同争议", "41"),
("劳动报酬与福利", "41"),
("医疗事故", "21"),
("停供", "21"),
("基础教育", "21"),
("职业教育", "21"),
("物业资质管理", "21"),
("拆迁补偿", "21"),
("设施维护", "21"),
("市场外溢", "11"),
("占道经营", "11"),
("树木管理", "11"),
("农村基础设施", "11"),
("无水", "11"),
("供气质量", "11"),
("停气", "11"),
("市政府工作部门(含部门管理机构、直属单位)", "11"),
("燃气管理", "11"),
("市容环卫", "11"),
("新闻传媒", "11"),
("人才招聘", "11"),
("市场环境", "11"),
("行政事业收费", "11"),
("食品安全与卫生", "11"),
("城市交通", "11"),
("房地产开发", "11"),
("房屋配套问题", "11"),
("物业服务", "11"),
("物业管理", "11"),
("占道", "11"),
("园林绿化", "11"),
("户籍管理及身份证", "11"),
("公交运输管理", "11"),
("公路(水路)交通", "11"),
("房屋与图纸不符", "11"),
("有线电视", "11"),
("社会治安", "11"),
("林业资源", "11"),
("其他行政事业收费", "11"),
("经营性收费", "11"),
("食品安全与卫生", "11"),
("体育活动", "11"),
("有线电视安装及调试维护", "11"),
("低保管理", "11"),
("劳动争议", "11"),
("社会福利及事务", "11"),
("一次供水问题", "11"),
]
# 使用链式写法绘制词云图
c = (
WordCloud() # 创建词云图对象
.add(series_name="热点分析", data_pair=data, word_size_range=[6, 66], shape=SymbolType.RECT) # 添加数据并设置形状为矩形
.set_global_opts( # 设置全局选项
title_opts=opts.TitleOpts(
title="热点分析", title_textstyle_opts=opts.TextStyleOpts(font_size=23) # 设置标题样式
),
tooltip_opts=opts.TooltipOpts(is_show=True), # 设置提示框
)
)
# 渲染图表
c.render("矩形词云图.html") # 将图表渲染为HTML文件
c.render_notebook() # 在Notebook中显示图表
运行结果:
3. 三角形词云图
绘制三角形词云图将往add函数中添加shape=SymbolType.TRIANGLE
参数即可:
import pyecharts.options as opts
from pyecharts.charts import WordCloud
from pyecharts.globals import SymbolType
data = [
("生活资源", "999"),
("供热管理", "888"),
("供气质量", "777"),
("生活用水管理", "688"),
("一次供水问题", "588"),
("交通运输", "516"),
("城市交通", "515"),
("环境保护", "483"),
("房地产管理", "462"),
("城乡建设", "449"),
("社会保障与福利", "429"),
("社会保障", "407"),
("文体与教育管理", "406"),
("公共安全", "406"),
("公交运输管理", "386"),
("出租车运营管理", "385"),
("供热管理", "375"),
("市容环卫", "355"),
("自然资源管理", "355"),
("粉尘污染", "335"),
("噪声污染", "324"),
("土地资源管理", "304"),
("物业服务与管理", "304"),
("医疗卫生", "284"),
("粉煤灰污染", "284"),
("占道", "284")
]
# 使用链式写法绘制词云图
c = (
WordCloud() # 创建词云图对象
.add(series_name="热点分析", data_pair=data, word_size_range=[6, 66], shape=SymbolType.TRIANGLE) # 添加数据并设置形状为三角形
.set_global_opts( # 设置全局选项
title_opts=opts.TitleOpts(
title="热点分析", title_textstyle_opts=opts.TextStyleOpts(font_size=23) # 设置标题样式
),
tooltip_opts=opts.TooltipOpts(is_show=True), # 设置提示框
)
)
# 渲染图表
c.render("三角形词云图.html") # 将图表渲染为HTML文件
c.render_notebook() # 在Notebook中显示图表
运行结果:
4. 菱形词云图
绘制 菱形词云图将往add函数中添加shape=SymbolType.DIAMOND
参数即可:
import pyecharts.options as opts
from pyecharts.charts import WordCloud
from pyecharts.globals import SymbolType
data = [
("生活资源", "999"),
("供热管理", "888"),
("供气质量", "777"),
("生活用水管理", "688"),
("一次供水问题", "588"),
("交通运输", "516"),
("城市交通", "515"),
("环境保护", "483"),
("房地产管理", "462"),
("城乡建设", "449"),
("社会保障与福利", "429"),
("社会保障", "407"),
("文体与教育管理", "406"),
("公共安全", "406"),
("公交运输管理", "386"),
("出租车运营管理", "385"),
("供热管理", "375"),
("市容环卫", "355"),
("自然资源管理", "355"),
("粉尘污染", "335"),
("噪声污染", "324"),
("土地资源管理", "304"),
("物业服务与管理", "304"),
("医疗卫生", "284"),
("粉煤灰污染", "284"),
("占道", "284")
]
# 使用链式写法绘制词云图
c = (
WordCloud() # 创建词云图对象
.add(series_name="热点分析", data_pair=data, word_size_range=[6, 66], shape=SymbolType.DIAMOND) # 添加数据并设置形状为菱形
.set_global_opts( # 设置全局选项
title_opts=opts.TitleOpts(
title="热点分析", title_textstyle_opts=opts.TextStyleOpts(font_size=23) # 设置标题样式
),
tooltip_opts=opts.TooltipOpts(is_show=True), # 设置提示框
)
)
# 渲染图表
c.render("菱形词云图.html") # 将图表渲染为HTML文件
c.render_notebook() # 在Notebook中显示图表
运行结果:
5. 自定义图片词云图
1、这里我们提取准备好一个图片放到代码同级目录下或者换成自己喜欢的图片:
2、在add函数添加mask_image="图片名.png"
或者指定路径r"E:\Python3.10\图片名.png"
:
import pyecharts.options as opts
from pyecharts.charts import WordCloud
from pyecharts.globals import SymbolType
data = [("市场", 1446),
("汽车", 928),
("视频", 906),
("电视", 825),
("电台", 514),
("动漫", 486),
("音乐", 53),
("直播", 163),
("广播", 86),
("资讯", 1437),
("财经", 422),
("娱乐", 353),
("军事", 331),
("信托", 90),
("征信", 76),
("期货", 76),
("理财", 40),
("银行", 36),
("生活资源", "999"),
("供热管理", "888"),
("供气质量", "777"),
("生活用水管理", "688"),
("一次供水问题", "588"),
("交通运输", "516"),
("城市交通", "515"),
("环境保护", "483"),
("房地产管理", "462"),
("城乡建设", "449"),
("社会保障与福利", "429"),
("社会保障", "407"),
("文体与教育管理", "406"),
("公共安全", "406"),
("公交运输管理", "386"),
("出租车运营管理", "385"),
("供热管理", "375"),
("市容环卫", "355"),
("自然资源管理", "355"),
("粉尘污染", "335"),
("噪声污染", "324"),
("土地资源管理", "304"),
("物业服务与管理", "304"),
("医疗卫生", "284"),
("粉煤灰污染", "284"),
("占道", "284"),
("供热发展", "254"),
("农村土地规划管理", "254"),
("生活噪音", "253"),
("供热单位影响", "253"),
("城市供电", "223"),
("房屋质量与安全", "223"),
("大气污染", "223"),
("房屋安全", "223"),
("文化活动", "223"),
("拆迁管理", "223"),
("公共设施", "223"),
("供气质量", "223"),
("供电管理", "223"),
("燃气管理", "152"),
("教育管理", "152"),
("医疗纠纷", "152"),
("执法监督", "152"),
("设备安全", "152"),
("政务建设", "152"),
("县区、开发区", "152"),
("宏观经济", "152"),
("教育管理", "112"),
("社会保障", "112"),
("生活用水管理", "112"),
("物业服务与管理", "112"),
("分类列表", "112"),
("农业生产", "112"),
("二次供水问题", "112"),
("城市公共设施", "92"),
("拆迁政策咨询", "92"),
("物业服务", "92"),
("物业管理", "92"),
("社会保障保险管理", "92"),
("低保管理", "92"),
("文娱市场管理", "72"),
("城市交通秩序管理", "72"),
("执法争议", "72"),
("商业烟尘污染", "72"),
("占道堆放", "71"),
("地上设施", "71"),
("水质", "71"),
("无水", "71"),
("供热单位影响", "71"),
("人行道管理", "71"),
("主网原因", "71"),
("集中供热", "71"),
("客运管理", "71"),
("国有公交(大巴)管理", "71"),
("工业粉尘污染", "71"),
("治安案件", "71"),
("压力容器安全", "71"),
("身份证管理", "71"),
("群众健身", "41"),
("工业排放污染", "41"),
("破坏森林资源", "41"),
("市场收费", "41"),
("生产资金", "41"),
("生产噪声", "41"),
("农村低保", "41"),
("劳动争议", "41"),
("劳动合同争议", "41"),
("劳动报酬与福利", "41"),
("医疗事故", "21"),
("停供", "21"),
("基础教育", "21"),
("职业教育", "21"),
("物业资质管理", "21"),
("拆迁补偿", "21"),
("设施维护", "21"),
("市场外溢", "11"),
("占道经营", "11"),
("树木管理", "11"),
("农村基础设施", "11"),
("无水", "11"),
("供气质量", "11"),
("停气", "11"),
("市政府工作部门(含部门管理机构、直属单位)", "11"),
("燃气管理", "11"),
("市容环卫", "11"),
("新闻传媒", "11"),
("人才招聘", "11"),
("市场环境", "11"),
("行政事业收费", "11"),
("食品安全与卫生", "11"),
("城市交通", "11"),
("房地产开发", "11"),
("房屋配套问题", "11"),
("物业服务", "11"),
("物业管理", "11"),
("占道", "11"),
("园林绿化", "11"),
("户籍管理及身份证", "11"),
("公交运输管理", "11"),
("公路(水路)交通", "11"),
("房屋与图纸不符", "11"),
("有线电视", "11"),
("社会治安", "11"),
("林业资源", "11"),
("其他行政事业收费", "11"),
("经营性收费", "11"),
("食品安全与卫生", "11"),
("体育活动", "11"),
("有线电视安装及调试维护", "11"),
("低保管理", "11"),
("劳动争议", "11"),
("福", "11"),
("供水", "11"),
]
# 使用链式写法绘制词云图
c = (
WordCloud() # 创建词云图对象
.add("", data, word_size_range=[6, 66], mask_image="五叶草.png") # 添加数据并指定图片路径
.set_global_opts(title_opts=opts.TitleOpts(title="词云图示例")) # 设置全局选项,如标题
)
# 渲染图表
c.render("自定义图片词云图.html") # 将图表渲染为HTML文件
c.render_notebook() # 在Notebook中显示图表
运行结果,绘制五叶草形状的词云图:
书籍推荐
《趣味微项目,轻松学Python 》
Python是一种优秀的通用编程语言,可以通过Python编写程序来给朋友发送秘密消息或者下国际象棋。Python模块可以帮助你处理复杂的科学数据,探索机器学习算法,以及生成可供发表的图形。许多大学的计算机科学课程已经将入门语言从C和Java等语言转向Python语言,因为Python是一种相对易学的语言。可以使用Python学习计算机科学中既基础又强大的概念。在介绍正则表达式和高阶函数这一类的概念时,鼓励你进一步深入学习它们。
作者认为需要做练习。就像那个老笑话:“通往卡内基音乐厅的路在哪里?答案是:练习,练习,再练习。”这些编码的挑战性不是很强,你很可能在几小时或几天内就可以完成一个任务。《趣味微项目,轻松学Python》的内容比我在一个学期的大学课堂上讲的内容要充实,所以我想整本书会花你几个月的时间。我希望你能解决这些问题,接着思考这些问题,然后再回来看看是否能以不同的方式解决它们,比如使用更高级的技巧,或者让程序运行得更快。
主要内容
● 编写Python命令行程序
● 处理Python数据结构
● 使用和控制随机性
● 为程序和函数编写并运行测试
● 下载每个项目的全套测试集
京东:https://item.jd.com/13613345.html
文章出处登录后可见!