pyecharts可视化图表-pie:从入门到精通
引言:为什么饼图是数据可视化的必备技能
饼图是数据可视化领域中最直观、最常用的图表类型之一,特别适合展示不同类别在总体中所占的比例关系。无论是商业报告中的市场份额分析、学术研究中的数据分布展示,还是日常工作中的资源分配可视化,饼图都能以简洁明了的方式传达关键信息。pyecahts源码
通过将一个圆形分割成多个扇形区域,饼图让读者可以在一瞥之间理解各类别之间的比例关系。pyecharts库提供了强大而灵活的饼图绘制功能,不仅支持基本的饼图创建,还提供了丰富的定制选项,让我们可以轻松创建各种精美的、专业级别的饼图。
在本系列博客中,我们将从基础的饼图绘制开始,逐步介绍各种进阶功能,包括数据处理、样式定制、交互效果等。无论你是刚入门的数据分析师,还是希望提升可视化技能的开发者,本系列内容都能帮助你从入门到精通pyecharts饼图的使用。
目录
- 引言:为什么饼图是数据可视化的必备技能
- 示例一:从零开始创建你的第一个饼图
- 代码解析
- 运行效果
- 示例二:自定义颜色,让饼图更具吸引力
- 代码解析
- 运行效果
- 示例三:玫瑰图进阶,展示数据的相对差异
- 代码解析
- 运行效果
- 示例四:环形饼图与图例优化
- 代码解析
- 运行效果
- 示例五:灵活调整饼图位置,打造专业布局
- 代码解析
- 运行效果
- 总结与后续内容预告
示例一:从零开始创建你的第一个饼图
下面是我们的第一个饼图示例代码:
from pyecharts import options as opts # 导入配置模块
from pyecharts.charts import Pie # 导入饼图模块
from pyecharts.faker import Faker # 导入模拟数据生成器c = (Pie() # 创建饼图对象# 添加数据,使用Faker生成模拟数据.add("", [list(z) for z in zip(Faker.choose(), Faker.values())])# 设置全局配置,添加标题.set_global_opts(title_opts=opts.TitleOpts(title="Pie-基本示例"))# 设置系列配置,定制标签格式.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))# 注释掉的代码用于输出为HTML文件#.render("pie_base.html")
)
c.render_notebook() # 在Notebook中渲染图表
代码解析
-
导入必要的模块:
options
模块用于配置图表的各种属性Pie
类用于创建饼图Faker
类用于生成模拟数据,方便我们快速测试
-
创建饼图对象:
Pie()
构造函数创建一个新的饼图实例 -
添加数据:
.add()
方法用于向饼图添加数据- 第一个参数为空字符串,表示不设置系列名称
- 第二个参数是数据列表,使用
zip(Faker.choose(), Faker.values())
生成,其中Faker.choose()
生成类别名称,Faker.values()
生成对应的值 [list(z) for z in ...]
将每个元组转换为列表,符合pyecharts的数据格式要求
-
设置全局配置:
.set_global_opts()
方法用于设置图表的全局属性title_opts=opts.TitleOpts(title="Pie-基本示例")
设置图表标题为"Pie-基本示例"
-
设置系列配置:
.set_series_opts()
方法用于设置系列的属性label_opts=opts.LabelOpts(formatter="{b}: {c}")
设置标签格式,其中{b}
表示类别名称,{c}
表示对应的值
-
渲染图表:
c.render_notebook()
在Jupyter Notebook中渲染图表- 如果要输出为HTML文件,可以使用
c.render("pie_base.html")
运行效果
运行代码后,Notebook中会呈现一个简洁美观的饼图。图表标题"Pie-基本示例"清晰可见,每个扇形区域都标注了对应的类别名称和具体数值。通过这个简单的饼图,我们可以直观地比较不同类别的数据大小和比例关系。
实用技巧:如果需要将图表保存为图片或HTML文件,可以使用c.render("pie_base.html")
或c.render("pie_base.png")
方法。
示例二:自定义颜色,让饼图更具吸引力
下面是我们的第二个饼图示例代码,展示如何自定义饼图的颜色:
from pyecharts import options as opts # 导入配置模块
from pyecharts.charts import Pie # 导入饼图模块
from pyecharts.faker import Faker # 导入模拟数据生成器c = (Pie() # 创建饼图对象# 添加数据,使用Faker生成模拟数据.add("", [list(z) for z in zip(Faker.choose(), Faker.values())])# 设置饼图的颜色.set_colors(["blue", "green", "yellow", "red", "pink", "orange", "purple"])# 设置全局配置,添加标题.set_global_opts(title_opts=opts.TitleOpts(title="Pie-设置颜色"))# 设置系列配置,定制标签格式.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))# 注释掉的代码用于输出为HTML文件#.render("pie_set_color.html")
)
c.render_notebook() # 在Notebook中渲染图表
代码解析
-
导入必要的模块:与第一个示例相同
-
创建饼图对象:与第一个示例相同
-
添加数据:与第一个示例相同
-
设置饼图颜色:
.set_colors()
方法用于设置饼图中各个扇形区域的颜色- 参数是一个颜色字符串列表,可以使用颜色名称或十六进制颜色代码
- 这里我们使用了七种不同的颜色:蓝色、绿色、黄色、红色、粉色、橙色和紫色
-
设置全局配置:与第一个示例类似,但标题改为"Pie-设置颜色"
-
设置系列配置:与第一个示例相同
-
渲染图表:与第一个示例相同
运行效果
运行代码后,你会看到一个色彩丰富的饼图。每个扇形区域都采用了我们指定的颜色,使得不同类别之间的区分更加明显。图表标题"Pie-设置颜色"准确传达了示例的核心内容。
设计建议:选择颜色时,可以根据数据的含义或行业惯例进行搭配。例如,财务数据中常用绿色表示增长,红色表示下降;也可以使用渐变色系,使图表更具视觉层次感。此外,确保颜色对比度符合无障碍标准,让所有读者都能清晰识别。
示例三:玫瑰图进阶,展示数据的相对差异
玫瑰图是饼图的一种变体,它通过将扇形区域的半径或面积进行缩放,以强调数据之间的差异。下面是玫瑰图的示例代码:
from pyecharts import options as opts # 导入配置模块
from pyecharts.charts import Pie # 导入饼图模块
from pyecharts.faker import Faker # 导入模拟数据生成器v = Faker.choose() # 生成类别名称
c = (Pie() # 创建饼图对象.add("", # 不设置系列名称[list(z) for z in zip(v, Faker.values())], # 数据列表radius=["30%", "75%"], # 内半径和外半径center=["25%", "50%"], # 饼图中心位置rosetype="radius", # 玫瑰图类型:按半径缩放label_opts=opts.LabelOpts(is_show=False), # 不显示标签).add("", # 不设置系列名称[list(z) for z in zip(v, Faker.values())], # 数据列表radius=["30%", "75%"], # 内半径和外半径center=["75%", "50%"], # 饼图中心位置rosetype="area", # 玫瑰图类型:按面积缩放).set_global_opts(title_opts=opts.TitleOpts(title="Pie-玫瑰图示例")) # 设置全局配置#.render("pie_rosetype.html") # 注释掉的代码用于输出为HTML文件
)
c.render_notebook() # 在Notebook中渲染图表
代码解析
-
导入必要的模块:与前两个示例相同
-
生成类别名称:
v = Faker.choose()
生成一组类别名称,将用于两个玫瑰图 -
创建饼图对象:与前两个示例相同
-
添加第一个玫瑰图:
.add()
方法用于向饼图添加数据radius=["30%", "75%"]
设置内半径和外半径,创建环形效果center=["25%", "50%"]
设置饼图中心位置,使其位于左侧rosetype="radius"
设置玫瑰图类型为按半径缩放label_opts=opts.LabelOpts(is_show=False)
不显示标签
-
添加第二个玫瑰图:
- 与第一个玫瑰图类似,但位置位于右侧
center=["75%", "50%"]
rosetype="area"
设置玫瑰图类型为按面积缩放
- 与第一个玫瑰图类似,但位置位于右侧
-
设置全局配置:设置图表标题为"Pie-玫瑰图示例"
-
渲染图表:与前两个示例相同
运行效果
代码运行后,Notebook中会呈现两个风格迥异的玫瑰图:左侧是按半径缩放的玫瑰图,数据值越大,扇形的半径越长;右侧是按面积缩放的玫瑰图,数据值越大,扇形的面积越大。
通过比较这两个玫瑰图,我们可以清晰地看到不同缩放方式对数据展示的影响:半径缩放更强调数据的绝对差异,而面积缩放则更适合展示相对比例。这种对比展示方式在需要突出数据多维度特征时非常有效。
应用场景:玫瑰图特别适合展示周期性数据(如月度销售数据)或多类别对比数据(如不同产品的市场份额随时间的变化)。
示例四:环形饼图与图例优化
下面是我们的第四个饼图示例代码,展示如何设置饼图的半径和图例位置:
from pyecharts import options as opts # 导入配置模块
from pyecharts.charts import Pie # 导入饼图模块
from pyecharts.faker import Faker # 导入模拟数据生成器c = (Pie() # 创建饼图对象.add("", # 不设置系列名称[list(z) for z in zip(Faker.choose(), Faker.values())], # 数据列表radius=["40%", "75%"], # 设置内半径和外半径).set_global_opts(title_opts=opts.TitleOpts(title="Pie-Radius"), # 设置标题legend_opts=opts.LegendOpts(orient="vertical", pos_top="15%", pos_left="2%"), # 设置图例).set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}")) # 设置标签格式#.render("pie_radius.html") # 注释掉的代码用于输出为HTML文件
)
c.render_notebook() # 在Notebook中渲染图表
代码解析
-
导入必要的模块:与前三个示例相同
-
创建饼图对象:与前三个示例相同
-
添加数据:与前三个示例相同
-
设置饼图半径:
radius=["40%", "75%"]
设置饼图的内半径和外半径,创建环形效果- 内半径为整个图表宽度的40%,外半径为75%
-
设置全局配置:
title_opts=opts.TitleOpts(title="Pie-Radius")
设置图表标题为"Pie-Radius"legend_opts=opts.LegendOpts(orient="vertical", pos_top="15%", pos_left="2%")
设置图例orient="vertical"
设置图例为垂直方向pos_top="15%"
设置图例顶部距离图表顶部的距离为15%pos_left="2%"
设置图例左侧距离图表左侧的距离为2%
-
设置系列配置:与前三个示例相同
-
渲染图表:与前三个示例相同
运行效果
运行代码后,一个精致的环形饼图会出现在Notebook中。图表标题"Pie-Radius"明确了示例的主题,左侧垂直排列的图例节省了水平空间,使得图表整体布局更加紧凑。
环形饼图相比普通饼图具有独特的优势:它不仅保留了饼图展示比例关系的功能,还可以在中心区域添加额外的信息(如总计数据、标题或其他图表)。通过调整内半径和外半径的比例,我们可以创建不同风格的环形效果,从细环到宽环,满足各种设计需求。
布局技巧:当图表中类别较多时,垂直排列的图例比水平排列更节省空间,也更易于阅读。
示例五:灵活调整饼图位置,打造专业布局
下面是我们的第五个饼图示例代码,展示如何调整饼图的位置:
from pyecharts import options as opts # 导入配置模块
from pyecharts.charts import Pie # 导入饼图模块
from pyecharts.faker import Faker # 导入模拟数据生成器c = (Pie() .add("",[list(z) for z in zip(Faker.choose(), Faker.values())],center=["35%", "50%"], ).set_global_opts(title_opts=opts.TitleOpts(title="Pie-调整位置"),legend_opts=opts.LegendOpts(pos_left="15%"),).set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))#.render("pie_position.html")
)
c.render_notebook()
代码解析
-
导入必要的模块:与前四个示例相同
-
创建饼图对象:与前四个示例相同
-
添加数据:与前四个示例相同
-
设置饼图位置:
center=["35%", "50%"]
设置饼图中心位置- 第一个值 “35%” 表示饼图中心距离图表左侧的水平距离
- 第二个值 “50%” 表示饼图中心距离图表顶部的垂直距离
- 这两个值都是相对于整个图表区域的百分比
-
设置全局配置:
title_opts=opts.TitleOpts(title="Pie-调整位置")
设置图表标题legend_opts=opts.LegendOpts(pos_left="15%")
设置图例左侧距离图表左侧的距离为15%
-
设置系列配置:与前四个示例相同
-
渲染图表:与前四个示例相同
运行效果
代码运行后,你会看到一个非居中的饼图,其中心位置偏向左侧(水平位置35%)。图表标题"Pie-调整位置"准确反映了示例的核心内容。
调整饼图位置是创建复杂可视化仪表盘的关键技能。通过精确控制每个图表的位置,我们可以在同一个画布上展示多个相关图表,打造专业的数据仪表盘。center
参数接受百分比值或具体像素值,让我们可以根据需要精确定位饼图。
高级应用:结合多个饼图并调整它们的位置,可以创建对比鲜明的数据展示效果,特别适合展示不同时间段或不同群体的数据对比。
总结与后续内容预告
通过本文的学习,我们已经掌握了pyecharts饼图的五种核心用法:
- 创建基本饼图并设置标签格式
- 自定义饼图颜色,提升视觉效果
- 使用玫瑰图展示数据的相对差异
- 创建环形饼图并优化图例布局
- 灵活调整饼图位置,打造专业可视化
这些技巧涵盖了饼图可视化的大部分应用场景,从简单的数据展示到复杂的仪表盘设计,都能满足你的需求。
敬请期待后续内容,让我们一起探索pyecharts饼图的无限可能!