【数据可视化-93】使用 Pyecharts 绘制旭日图:步骤与数据组织形式
🧑 博主简介:曾任某智慧城市类企业
算法总监
,目前在美国市场的物流公司从事高级算法工程师
一职,深耕人工智能领域,精通python数据挖掘、可视化、机器学习等,发表过AI相关的专利并多次在AI类比赛中获奖。CSDN人工智能领域的优质创作者,提供AI相关的技术咨询、项目开发和个性化解决方案等服务,如有需要请站内私信或者联系任意文章底部的的VX名片(ID:xf982831907
)
💬 博主粉丝群介绍:① 群内初中生、高中生、本科生、研究生、博士生遍布,可互相学习,交流困惑。② 热榜top10的常客也在群里,也有数不清的万粉大佬,可以交流写作技巧,上榜经验,涨粉秘籍。③ 群内也有职场精英,大厂大佬,可交流技术、面试、找工作的经验。④ 进群免费赠送写作秘籍一份,助你由写作小白晋升为创作大佬。⑤ 进群赠送CSDN评论防封脚本,送真活跃粉丝,助你提升文章热度。有兴趣的加文末联系方式,备注自己的CSDN昵称,拉你进群,互相学习共同进步。
【数据可视化-93】使用 Pyecharts 绘制旭日图:步骤与数据组织形式
- 一、引言
- 二、旭日图的特点
- 三、数据组织形式
- 2.1 多层级数据组织
- 四、绘制旭日图的步骤
- 4.1 安装 Pyecharts
- 4.2 准备数据
- 4.3 初始化旭日图
- 4.4 添加数据
- 4.5 设置全局选项
- 4.6 渲染图表
- 五、运行结果
- 六、高级旭日图示例
- 七、总结
一、引言
在数据可视化中,旭日图(Sunburst Chart)是一种非常直观且美观的图表,用于展示层次化的数据结构。它类似于饼图,但可以展示更多的层级关系。本文将详细介绍如何使用 Pyecharts 绘制旭日图,并重点介绍旭日图的数据组织形式。
二、旭日图的特点
旭日图是一种层次化的饼图,主要用于展示多层级的数据结构。它的每一层代表一个层级,每个扇区的大小表示该层级的占比。旭日图特别适合展示复杂的层级关系,如组织结构、文件系统、产品分类等。
三、数据组织形式
旭日图的数据组织形式通常是一个嵌套的列表结构,每个元素代表一个层级,每个层级又包含多个子元素。每个子元素是一个包含以下字段的字典:
name
:扇区的名称。value
:扇区的值,表示该扇区的大小。children
:子层级的列表,如果该扇区没有子层级,则可以省略。
以下是一个简单的例子:
data = [{"name": "一级分类","value": 10,"children": [{"name": "二级分类1", "value": 4},{"name": "二级分类2", "value": 6},],}
]
2.1 多层级数据组织
旭日图支持多层级的数据结构,每个层级可以包含多个子层级。以下是一个包含三级分类的数据结构:
data = [{"name": "一级分类","value": 10,"children": [{"name": "二级分类1", "value": 4},{"name": "二级分类2","value": 6,"children": [{"name": "三级分类1", "value": 3},{"name": "三级分类2", "value": 3},],},],}
]
四、绘制旭日图的步骤
4.1 安装 Pyecharts
在开始之前,确保已经安装了 Pyecharts。可以通过以下命令安装:
pip install pyecharts
4.2 准备数据
根据旭日图的数据组织形式,准备你的数据。以下是一个完整的例子:
data = [{"name": "一级分类","value": 10,"children": [{"name": "二级分类1", "value": 4},{"name": "二级分类2","value": 6,"children": [{"name": "三级分类1", "value": 3},{"name": "三级分类2", "value": 3},],},],},
]
4.3 初始化旭日图
使用 Pyecharts 的 Sunburst
组件来绘制旭日图。
from pyecharts.charts import Sunburst
from pyecharts import options as opts# 初始化旭日图
sunburst = Sunburst(init_opts=opts.InitOpts(width="800px", height="800px"))
4.4 添加数据
将准备好的数据添加到旭日图中。
sunburst.add(series_name="",data_pair=data,radius=[0, "90%"],label_opts=opts.LabelOpts(is_show=True, position="inside"),itemstyle_opts=opts.ItemStyleOpts(border_color="#fff"),
)
4.5 设置全局选项
设置旭日图的全局选项,如标题、视觉映射等。
sunburst.set_global_opts(title_opts=opts.TitleOpts(title="旭日图示例", subtitle="数据来源:自定义"),visualmap_opts=opts.VisualMapOpts(pos_left="left",pos_top="top",min_=0,max_=20,orient="horizontal",is_piecewise=True,pieces=[{"min": 15, "max": 20, "label": "15-20", "color": "#f44336"},{"min": 10, "max": 14, "label": "10-14", "color": "#ff9800"},{"min": 5, "max": 9, "label": "5-9", "color": "#ffeb3b"},{"min": 0, "max": 4, "label": "0-4", "color": "#4caf50"},],),
)
4.6 渲染图表
将旭日图渲染为 HTML 文件,以便查看效果。
sunburst.render("旭日图示例.html")
五、运行结果
运行上述代码后,会生成一个名为 旭日图示例.html
的文件。打开该文件,可以看到如下效果:
六、高级旭日图示例
以下是一个更高级的旭日图示例,展示了如何使用更多的配置选项来增强图表的视觉效果。
from pyecharts.charts import Sunburst
from pyecharts import options as opts# 准备数据
data = [{"name": "一级分类","value": 10,"children": [{"name": "二级分类1", "value": 4},{"name": "二级分类2","value": 6,"children": [{"name": "三级分类1", "value": 3},{"name": "三级分类2", "value": 3},],},],},{"name": "一级分类2","value": 20,"children": [{"name": "二级分类3", "value": 10},{"name": "二级分类4", "value": 10},],},
]# 初始化旭日图
sunburst = Sunburst(init_opts=opts.InitOpts(width="1000px", height="600px"))# 添加数据
sunburst.add("",data_pair=data,highlight_policy="ancestor",radius=[0, "95%"],sort_="null",levels=[{},{"r0": "15%","r": "35%","itemStyle": {"borderWidth": 2},"label": {"rotate": "tangential"},},{"r0": "35%", "r": "70%", "label": {"align": "right"}},{"r0": "70%","r": "72%","label": {"position": "outside", "padding": 3, "silent": False},"itemStyle": {"borderWidth": 3},},],
)# 设置全局选项
sunburst.set_global_opts(title_opts=opts.TitleOpts(title="Sunburst-官方示例"),visualmap_opts=opts.VisualMapOpts(pos_left="left",pos_top="top",min_=0,max_=20,orient="horizontal",is_piecewise=True,pieces=[{"min": 15, "max": 20, "label": "15-20", "color": "#f44336"},{"min": 10, "max": 14, "label": "10-14", "color": "#ff9800"},{"min": 5, "max": 9, "label": "5-9", "color": "#ffeb3b"},{"min": 0, "max": 4, "label": "0-4", "color": "#4caf50"},],),
)# 设置系列选项
sunburst.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}"))# 渲染图表
sunburst.render("旭日图示例1.html")
七、总结
本文详细介绍了如何使用 Pyecharts 绘制旭日图,并重点介绍了旭日图的数据组织形式。通过嵌套的列表结构,我们可以轻松地组织和展示多层级的数据。旭日图不仅美观,而且非常直观,特别适合展示复杂的层级关系,我们还可以使用在数据中的颜色设置来规定绘制图形的颜色,设置"itemStyle": {“color”: “#e65832”}参数即可。