每日五个pyecharts可视化图表:条形图与关系图
在数据可视化领域,选择合适的图表类型对于有效传达信息至关重要。pyecharts作为Python中强大的可视化库,提供了丰富的图表类型。本文将聚焦于两种常用图表类型:条形图(Bar)和关系图(Graph),并通过5个实用示例展示如何使用pyecharts创建风格各异的可视化效果。
- 条形图(Bar):适用于展示不同类别之间的数量对比,是数据可视化中最基础也最常用的图表类型之一
- 关系图(Graph):用于展示实体之间的关联关系,如社交网络、知识图谱等复杂关系网络
让我们开始学习这5种实用的可视化图表制作方法。
pyecahts源码
图表1:直方图 - 展示数据分布
直方图是条形图的一种特殊形式,主要用于展示数据的分布情况。与普通条形图不同,直方图通过设置category_gap=0
参数消除条形间的间隔,形成连续的视觉效果,更直观地反映数据的分布特征。
这种图表特别适合展示频率分布、数据集中趋势和离散程度,常用于统计分析、质量控制等场景。
from pyecharts import options as opts
from pyecharts.charts import Bar
from pyecharts.faker import Faker c = (Bar() .add_xaxis(Faker.choose()) .add_yaxis("商家A", Faker.values(), category_gap=0, color=Faker.rand_color()) .set_global_opts(title_opts=opts.TitleOpts(title="Bar-直方图")) #.render("bar_histogram.html")
)
c.render_notebook()
代码解释:
- 使用
Faker.choose()
生成x轴数据(随机选择的类别) - 使用
Faker.values()
生成y轴数据(随机数值) category_gap=0
设置类别之间的间隔为0,形成直方图效果color=Faker.rand_color()
设置随机颜色set_global_opts(title_opts=opts.TitleOpts(title="Bar-直方图"))
设置图表标题为"Bar-直方图"
图表2:带自定义标记线的条形图 - 数据阈值监控
在数据分析中,我们经常需要关注数据是否达到某个关键阈值。通过在条形图中添加自定义标记线,可以直观地展示数据与阈值的关系,提升数据解读效率。
这种图表特别适合KPI监控、目标达成率分析、质量控制等场景,帮助决策者快速识别异常值和达标情况。
from pyecharts import options as opts
from pyecharts.charts import Bar
from pyecharts.faker import Faker c = (Bar() .add_xaxis(Faker.choose()) .add_yaxis("商家A", Faker.values()) .add_yaxis("商家B", Faker.values()) .set_global_opts(title_opts=opts.TitleOpts(title="Bar-MarkLine(自定义)")) .set_series_opts(label_opts=opts.LabelOpts(is_show=False), markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(y=50, name="yAxis=50")] ), ) #.render("bar_markline_custom.html")
)
c.render_notebook()
代码解释:
- 使用
Faker.choose()
生成x轴数据(随机选择的类别) - 添加了两个y轴数据系列:“商家A"和"商家B”
label_opts=opts.LabelOpts(is_show=False)
设置不显示条形图上的标签markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(y=50, name="yAxis=50")])
添加自定义标记线,y轴值为50- 标记线可以帮助我们快速识别数据是否达到某个阈值,非常适合用于监控和分析数据
图表3:基本条形图 - 简洁数据对比
基本条形图是数据可视化中最常用的图表类型之一,它通过垂直或水平的条形展示不同类别的数据值,直观地反映各类别之间的数量差异。
本示例展示了如何创建带有标题和副标题的条形图,这种简洁明了的设计适合大多数商务报告、数据分析演示等场景,帮助观众快速理解数据对比关系。
from pyecharts import options as opts
from pyecharts.charts import Bar
from pyecharts.faker import Faker c = (Bar() .add_xaxis(Faker.choose()) .add_yaxis("商家A", Faker.values()) .add_yaxis("商家B", Faker.values()) .set_global_opts(title_opts=opts.TitleOpts(title="Bar-基本示例", subtitle="我是副标题")) #.render("bar_base.html")
)
c.render_notebook()
代码解释:
- 使用
Faker.choose()
生成x轴数据(随机选择的类别) - 添加了两个y轴数据系列:“商家A"和"商家B”
set_global_opts(title_opts=opts.TitleOpts(title="Bar-基本示例", subtitle="我是副标题"))
设置图表标题为"Bar-基本示例",副标题为"我是副标题"- 基本条形图是数据可视化中最常用的图表类型之一,适合展示不同类别之间的数量对比
图表4:带数据缩放的条形图 - 大数据集探索
当处理大量数据时,完整展示所有数据点可能导致图表难以阅读。通过添加数据缩放功能,用户可以灵活地查看数据的整体趋势和局部细节。
本示例同时实现了两种缩放方式:外部滑块缩放和内部拖动缩放,特别适合时间序列分析、销售数据趋势分析等大数据集场景,提升数据探索效率。
from pyecharts import options as opts
from pyecharts.charts import Bar
from pyecharts.faker import Faker c = (Bar() .add_xaxis(Faker.days_attrs) .add_yaxis("商家A", Faker.days_values, color=Faker.rand_color()) .set_global_opts(title_opts=opts.TitleOpts(title="Bar-DataZoom(slider+inside)"), datazoom_opts=[opts.DataZoomOpts(), opts.DataZoomOpts(type_="inside")], ) #.render("bar_datazoom_both.html")
)
c.render_notebook()
代码解释:
- 使用
Faker.days_attrs
生成x轴数据(代表天数) - 使用
Faker.days_values
生成y轴数据(代表每天的数值) color=Faker.rand_color()
设置随机颜色datazoom_opts=[opts.DataZoomOpts(), opts.DataZoomOpts(type_="inside")]
同时添加滑块数据缩放和内部数据缩放功能- 滑块缩放允许用户在图表底部拖动滑块来缩放数据范围
- 内部缩放允许用户直接在图表内部拖动来放大或缩小数据范围
图表5:关系图 - 展示复杂关联网络
关系图(Graph)是一种特殊的可视化图表,用于展示实体(节点)之间的关联关系(边)。通过节点大小、边的连接方式等视觉元素,可以直观地呈现复杂网络的结构特征。
这种图表特别适合社交网络分析、知识图谱展示、供应链关系可视化等场景,帮助我们理解复杂系统的结构和运行机制。
from pyecharts import options as opts
from pyecharts.charts import Graph nodes = [ {"name": "结点1", "symbolSize": 10}, {"name": "结点2", "symbolSize": 20}, {"name": "结点3", "symbolSize": 30}, {"name": "结点4", "symbolSize": 40}, {"name": "结点5", "symbolSize": 50}, {"name": "结点6", "symbolSize": 40}, {"name": "结点7", "symbolSize": 30}, {"name": "结点8", "symbolSize": 20},
]
links = []
for i in nodes: for j in nodes: links.append({"source": i.get("name"), "target": j.get("name")})
c = (Graph() .add("", nodes, links, repulsion=8000) .set_global_opts(title_opts=opts.TitleOpts(title="Graph-基本示例")) #.render("graph_base.html")
)
c.render_notebook()
代码解释:
nodes
定义了图中的节点,每个节点有名称和大小属性symbolSize
设置节点的大小links
定义了节点之间的连接关系,这里我们创建了所有节点之间的连接Graph().add("", nodes, links, repulsion=8000)
创建关系图,repulsion
设置节点之间的排斥力set_global_opts(title_opts=opts.TitleOpts(title="Graph-基本示例"))
设置图表标题为"Graph-基本示例"- 关系图非常适合展示实体之间的关联,如社交网络、知识图谱等
总结与实践建议
通过本文的学习,我们掌握了pyecharts中5种实用的可视化图表制作方法,涵盖了条形图和关系图的主要应用场景:
- 直方图:通过
category_gap=0
创建连续效果,适合展示数据分布特征 - 带标记线的条形图:使用
markline_opts
添加阈值线,提升数据监控效率 - 基本条形图:简洁明了的设计,适合大多数数据对比场景
- 带数据缩放的条形图:滑块+内部拖动双重缩放,优化大数据集探索体验
- 关系图:节点与边的巧妙组合,直观展示复杂网络关系
实践建议
- 选择合适的图表类型:根据数据特征和展示目的选择最适合的图表类型,条形图适合对比,关系图适合展示关联
- 优化视觉效果:合理使用颜色、标签、标题等元素,提升图表的可读性和美观度
- 增强交互体验:利用pyecharts提供的交互功能(如数据缩放、提示框等),提升用户体验
- 结合实际场景:根据具体业务场景调整图表参数,使可视化效果更贴合实际需求
pyecharts作为Python中功能强大的可视化库,提供了丰富的图表类型和灵活的配置选项。掌握本文介绍的这些技巧,可以帮助您创建更加专业、美观且实用的数据可视化作品,更好地挖掘和传达数据背后的价值。
期待您在实际项目中灵活运用这些技巧,创造出更具洞察力的数据可视化效果!