Python数据可视化:使用pyecharts绘制柱状图、折线图、饼图与散点图详解
本文详细介绍如何使用Python库pyecharts生成多种统计图表。涵盖柱状图的叠加与横向显示、折线图的平滑与阶梯面积模式、饼图的玫瑰样式以及散点图的动态效果。通过具体代码示例,解析add、Line、Pie等核心类及is_stack、is_smooth等关键参数的用法,帮助开发者快速掌握数据可视化技能。
pyecharts简介
pyecharts简介
Echarts是百度开发的开源JavaScript数据可视化库,而pyecharts则是Python中调用Echarts进行数据可视化的封装库。它支持生成柱状图、折线图、饼图、地图等多种统计图表,方便Python用户进行数据分析展示。
柱状图应用
柱状图应用
柱状图适用于二维数据集,每个数据点包含x和y两个值,且主要比较单一维度的数据。它常用于展示一段时间内的数据变化趋势或不同类别间的比较情况。
其优势在于利用柱子高度直观反映数据差异,人类视觉对高度差异非常敏感。
然而,柱状图仅适用于中小规模的数据集,数据量过大时可能导致图表拥挤难以辨识。
柱状图基础用法
from pyecharts import Bar
fruits = ['苹果','香蕉','凤梨','桔子','橙','桃子']
sales = [18888,20023,30989,8873,29876,5409]
bar = Bar('水果销售情况')
bar.add('',fruits,sales,is_stack=True)
(bar.render())

在pyecharts中,add()方法用于向图表添加数据系列。
若要比较不同商家对各类水果的销量,只需多次调用add()方法即可实现多系列对比。
from pyecharts import Bar
fruits = ['苹果','香蕉','凤梨','桔子','橙','桃子']
shop1_sales = [8888,3323,6989,8873,3876,15409]
bar = Bar('水果销售情况')
bar.add('商家A',fruits,shop1_sales,is_stack=False)
shop2_sales = [4888,7023,3989,5873,8876,6409]
bar.add('商家B',fruits,shop2_sales,is_stack=False)
bar.render()

若希望数据显示为叠加模式,只需将is_stack参数设置为True。
from pyecharts import Bar
fruits = ['苹果','香蕉','凤梨','桔子','橙','桃子']
shop1_sales = [8888,3323,6989,8873,3876,15409]
bar = Bar('水果销售情况')
bar.add('商家A',fruits,shop1_sales,is_stack=True)
shop2_sales = [4888,7023,3989,5873,8876,6409]
bar.add('商家B',fruits,shop2_sales,is_stack=True)
bar.render()

以下是柱状图中常用方法及属性介绍:
(1) 在add()方法中,通过is_stack参数可控制柱形图是否以叠加形式显示。
(2) 设置is_more_utils=True参数可在图表右侧显示工具栏,支持对生成图表进行更多操作,例如将柱形图转换为折线图。
(3) 标记功能:使用mark_point=['average']可添加平均值标记点;使用mark_line=['min','max','average']可添加最小值、最大值和平均值的标记线。
(4) 横向柱形图:设置is_convert=True可交换X轴和Y轴,生成横向显示的柱形图。
折线图应用
折线图应用
折线图常用于描绘统计事项总体指标的动态变化、研究对象间的依存关系以及总体中各部分的分配情况。
# 普通折线图
fruits = ['苹果','香蕉','凤梨','桔子','橙','桃子']
shop1_sales = [8888,3323,6989,8873,3876,15409]
shop2_sales = [4888,7023,3989,5873,8876,6409]
line = Line('折线图')
line.add('商家A', fruits, shop1_sales, mark_point=['max'])
line.add('商家B', fruits, shop2_sales, mark_point=['min'])
line.show_config()
line.render()

在line()方法中,is_smooth参数用于控制线条样式。将其设置为True时,折线将以圆滑曲线趋势变化,而非直线连接。
# 普通折线图
fruits = ['苹果','香蕉','凤梨','桔子','橙','桃子']
shop1_sales = [8888,3323,6989,8873,3876,15409]
shop2_sales = [4888,7023,3989,5873,8876,6409]
line = Line('折线图')
line.add('商家A', fruits, shop1_sales, mark_point=['max'])
line.add('商家B', fruits, shop2_sales, mark_point=['min'], is_smooth=True)
line.show_config()
line.render()

如示例所示,商家A设置了is_smooth为True,而商家B未设置。结果显示,商家B的折线呈现圆滑趋势变化。
此外,最常用的还有阶梯折线图和面积折线图。
阶梯折线图
只需将line()方法的is_step参数设置为True即可生成阶梯折线图。
fruits = ['苹果','香蕉','凤梨','桔子','橙','桃子']
shop2_sales = [4888,7023,3989,5873,8876,6409]
line = Line('折线图')
line.add('商家B', fruits, shop2_sales, mark_point=['min'], is_step=True)
line.show_config()
line.render()

面积折线图
fruits = ['苹果','香蕉','凤梨','桔子','橙','桃子']
shop2_sales = [4888,7023,3989,5873,8876,6409]
shop1_sales = [8888,3323,6989,8873,3876,15409]
line3 =Line("面积折线图")
line3.add("商家A", fruits, shop1_sales, is_fill=True, line_opacity=0.2, area_opacity=0.4, symbol=None, mark_point=['max'])
line3.add("商家B", fruits, shop2_sales, is_fill=True, area_color='#a3aed5', area_opacity=0.3, is_smooth=True)
line3.show_config()
line3.render()

柱状图与折线图组合
在柱状图上叠加显示折线图是常见的统计图表形式,需借助Overlap类来实现。
from pyecharts import Bar, Line, Overlap
fruits = ['苹果','香蕉','凤梨','桔子','橙','桃子']
shop1_sales = [8888,3323,6989,8873,3876,15409]
shop2_sales = [4888,7023,3989,5873,8876,6409]
bar = Bar("柱形图-折线图")
bar.add('bar', fruits, shop1_sales)
line = Line()
line.add('line', fruits, shop2_sales)
overlap = Overlap()
overlap.add(bar)
overlap.add(line)
overlap.show_config()
overlap.render()

饼图应用
饼图应用
饼图能清晰反映部分与部分、部分与整体之间的数量关系,直观显示每组数据相对于总数的大小。
from pyecharts import Pie
fruits = ['苹果','香蕉','凤梨','桔子','橙','桃子']
shop1_sales = [8888,3323,6989,8873,3876,15409]
pie = Pie('饼图')
pie.add('芝麻饼', fruits, shop1_sales, is_label_show=True)
pie.show_config()
pie.render()

玫瑰样式饼图
pie2 = Pie("饼图-玫瑰图示例", title_pos='center', width=900)
pie2.add("商家A", fruits, shop1_sales, center=[25, 50], is_random=True, radius=[25, 60], rosetype='radius')
pie2.add("商家B", fruits, shop2_sales, center=[75, 50], is_random=True, radius=[25, 60], rosetype='area', is_legend_show=False, is_label_show=True)
pie2.show_config()
pie2.render()

散点图应用
散点图应用
散点图(又称散点分布图)以其中一个变量为横坐标,另一个变量为纵坐标,利用坐标点的分布形态反映变量间的统计关系。其特点是可以直观表现影响因素和预测对象之间的总体趋势。
静态散点图
from pyecharts import Scatter
scatter =Scatter("散点图示例")
scatter.add("A", shop1_sales, shop2_sales)
scatter.add("B", shop1_sales[::-1], shop2_sales)
scatter.show_config()
scatter.render()

动态散点图
from pyecharts import EffectScatter
v1 =[5, 20, 36, 10, 10, 100]
v2 =[55, 60, 16, 20, 15, 80]
# 动态散点图
es =EffectScatter("动态散点图")
# v1 x坐标 v2 y坐标
es.add('苹果', v1, v2)
es.show_config()
es.render()

各种图形动态散点图
from pyecharts import EffectScatter
es = EffectScatter("动态散点图各种图形")
es.add("", [10], [10], symbol_size=20, effect_scale=3.5, effect_period=3, symbol="pin")
es.add("", [20], [20], symbol_size=12, effect_scale=4.5, effect_period=4,symbol="rect")
es.add("", [30], [30], symbol_size=30, effect_scale=5.5, effect_period=5,symbol="roundRect")
es.add("", [40], [40], symbol_size=10, effect_scale=6.5, effect_brushtype='fill',symbol="diamond")
es.add("", [50], [50], symbol_size=16, effect_scale=5.5, effect_period=3,symbol="arrow")
es.add("", [60], [60], symbol_size=6, effect_scale=2.5, effect_period=3,symbol="triangle")
es.show_config()
es.render()

以上介绍了使用pyecharts实现柱状图、折线图、散点图和饼图的统计图表方法。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













