每日五个pyecharts可视化图表-line:从入门到精通
在数据可视化领域,折线图是展示数据随时间或连续变量变化趋势的最常用工具之一。它通过连接数据点形成线条,直观地反映数据的增减变化和波动规律。pyecharts作为Python中强大的可视化库,提供了丰富的折线图配置选项,能够满足各种复杂的可视化需求。
本文将带您学习如何使用pyecharts创建5种不同风格的折线图,从基础到高级,涵盖气温变化、面积填充、空数据处理和对数轴等实用场景。无论您是数据分析新手还是有经验的开发者,都能从中获得实用的技巧和灵感。pyecahts源码
图表1:未来一周气温变化折线图
第一个图表展示了未来一周的气温变化情况,包括最高气温和最低气温。这个图表不仅显示了数据趋势,还添加了标记点和平均线,使得数据更加直观。通过这个例子,您将学习如何添加多条折线、设置标记点和标记线。
import pyecharts.options as opts
from pyecharts.charts import Line"""
Gallery 使用 pyecharts 1.1.0
参考地址: `https://echarts.apache.org/examples/editor.html?c=line-marker`
"""# 定义数据
week_name_list = ["周一", "周二", "周三", "周四", "周五", "周六", "周日"]
high_temperature = [11, 11, 15, 13, 12, 13, 10] # 最高气温数据
low_temperature = [1, -2, 2, 5, 3, 2, 0] # 最低气温数据# 创建折线图对象
line_chart = Line()# 添加x轴数据
line_chart.add_xaxis(xaxis_data=week_name_list)# 添加最高气温折线
line_chart.add_yaxis(series_name="最高气温",y_axis=high_temperature,# 设置标记点:最大值和最小值markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="max", name="最大值"),opts.MarkPointItem(type_="min", name="最小值"),]),# 设置标记线:平均值线markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="average", name="平均值")]),
)# 添加最低气温折线
line_chart.add_yaxis(series_name="最低气温",y_axis=low_temperature,# 设置标记点:周最低温度markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(value=-2, name="周最低", x=1, y=-1.5)]),# 设置标记线:平均值线和最大值线markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="average", name="平均值"),opts.MarkLineItem(symbol="none", x="90%", y="max"),opts.MarkLineItem(symbol="circle", type_="max", name="最高点"),]),
)# 设置全局配置
line_chart.set_global_opts(title_opts=opts.TitleOpts(title="未来一周气温变化", subtitle="数据可视化示例"),tooltip_opts=opts.TooltipOpts(trigger="axis"), # 触发类型为坐标轴toolbox_opts=opts.ToolboxOpts(is_show=True), # 显示工具箱xaxis_opts=opts.AxisOpts(type_="category", boundary_gap=False), # 无边界间隙
)# 在notebook中渲染
line_chart.render_notebook()
代码解释:
week_name_list
定义了x轴的星期数据high_temperature
和low_temperature
分别存储了最高气温和最低气温数据Line()
创建折线图对象.add_xaxis()
添加x轴数据.add_yaxis()
分别添加最高气温和最低气温两条折线markpoint_opts
设置标记点,如最大值、最小值和周最低温度markline_opts
设置标记线,如平均值线set_global_opts
设置全局配置,包括标题、提示框、工具箱和坐标轴类型boundary_gap=False
设置坐标轴无边界间隙,使折线图从坐标轴原点开始绘制,视觉效果更紧凑render_notebook()
在Jupyter Notebook中渲染图表
应用场景:
这种多折线图非常适合展示同一时间段内多个相关指标的变化趋势,如气温变化、股票价格走势、销售数据对比等。通过添加标记点和标记线,可以快速识别数据中的极值和趋势特征,提高数据解读效率。
图表2:面积图(紧贴 Y 轴)
第二个图表展示了如何创建面积图,这种图表通过填充折线与坐标轴之间的区域,更直观地展示数据的变化趋势和累积效应。此图表设置了紧贴 Y 轴的样式,使得图表更加紧凑,适合展示连续数据的变化。
import pyecharts.options as opts
from pyecharts.charts import Line
from pyecharts.faker import Faker # 创建折线图对象
line_chart = Line()# 添加x轴数据(使用Faker生成随机类别数据)
line_chart.add_xaxis(Faker.choose())# 添加商家A的折线,设置平滑曲线
line_chart.add_yaxis(series_name="商家A",y_axis=Faker.values(), # 随机生成数值数据is_smooth=True, # 平滑曲线
)# 添加商家B的折线,设置平滑曲线
line_chart.add_yaxis(series_name="商家B",y_axis=Faker.values(), # 随机生成数值数据is_smooth=True, # 平滑曲线
)# 设置系列配置
line_chart.set_series_opts(# 设置面积填充样式,透明度为0.5areastyle_opts=opts.AreaStyleOpts(opacity=0.5),# 不显示数据标签label_opts=opts.LabelOpts(is_show=False),
)# 设置全局配置
line_chart.set_global_opts(title_opts=opts.TitleOpts(title="面积图(紧贴 Y 轴)"),xaxis_opts=opts.AxisOpts(axistick_opts=opts.AxisTickOpts(is_align_with_label=True), # 刻度与标签对齐is_scale=False, # 不启用缩放boundary_gap=False, # 无边界间隙,紧贴Y轴),
)# 在notebook中渲染
line_chart.render_notebook()
代码解释:
Faker.choose()
生成随机的类别数据作为x轴Faker.values()
生成随机的数值数据作为y轴is_smooth=True
设置折线为平滑曲线,使图表更加美观areastyle_opts=opts.AreaStyleOpts(opacity=0.5)
设置面积填充样式,透明度为0.5,既展示趋势又不遮挡数据label_opts=opts.LabelOpts(is_show=False)
不显示数据标签,避免图表过于拥挤axistick_opts=opts.AxisTickOpts(is_align_with_label=True)
设置坐标轴刻度与标签对齐,提高可读性is_scale=False
不启用坐标轴缩放boundary_gap=False
设置坐标轴无边界间隙,使折线图紧贴Y轴,增强数据的连续性视觉效果
应用场景:
面积图特别适合展示一个或多个数据系列随时间的变化趋势,以及数据的累积效应。例如,展示不同产品的销售趋势、网站流量变化、股票价格波动等。通过填充区域,能够更直观地反映数据的增减变化和幅度大小。
图表3:基础折线图
第三个图表展示了如何创建基础折线图,这是最常用的折线图类型,简洁明了地展示数据随时间的变化趋势。通过这个例子,您将学习折线图的基本配置和使用方法。
import pyecharts.options as opts
from pyecharts.charts import Line"""
Gallery 使用 pyecharts 1.1.0
参考地址: `https://echarts.apache.org/examples/editor.html?c=line-simple`
"""# 定义数据
x_data = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"] # 星期数据(英文)
y_data = [820, 932, 901, 934, 1290, 1330, 1320] # 对应的数值数据# 创建折线图对象
line_chart = Line()# 设置全局配置
line_chart.set_global_opts(tooltip_opts=opts.TooltipOpts(is_show=False), # 不显示提示框xaxis_opts=opts.AxisOpts(type_="category"), # x轴为分类轴yaxis_opts=opts.AxisOpts(type_="value", # y轴为数值轴axistick_opts=opts.AxisTickOpts(is_show=True), # 显示y轴刻度splitline_opts=opts.SplitLineOpts(is_show=True), # 显示分割线),
)# 添加x轴数据
line_chart.add_xaxis(xaxis_data=x_data)# 添加y轴数据(折线)
line_chart.add_yaxis(series_name="", # 不设置系列名称y_axis=y_data,symbol="emptyCircle", # 标记点为空心圆is_symbol_show=True, # 显示标记点label_opts=opts.LabelOpts(is_show=False), # 不显示数据标签
)# 在notebook中渲染
line_chart.render_notebook()
代码解释:
x_data
定义了x轴的星期数据(英文)y_data
存储了对应的数值数据Line()
创建折线图对象tooltip_opts=opts.TooltipOpts(is_show=False)
不显示提示框,使图表更加简洁xaxis_opts=opts.AxisOpts(type_="category")
设置x轴为分类轴yaxis_opts
设置y轴为数值轴,并显示坐标轴刻度和分割线,提高可读性symbol="emptyCircle"
设置标记点为空心圆,美观且不遮挡数据is_symbol_show=True
显示标记点,方便识别数据点位置label_opts=opts.LabelOpts(is_show=False)
不显示数据标签,避免图表过于拥挤render_notebook()
在Jupyter Notebook中渲染图表
应用场景:
基础折线图适用于展示简单的时间序列数据或连续变量的变化趋势,如股票价格、气温变化、销售数据等。这种图表简洁明了,能够快速传达数据的整体趋势和变化规律,是数据可视化中最常用的图表类型之一。
图表4:连接空数据折线图
第四个图表展示了如何处理数据中的空值,并设置折线图连接空数据点。在实际数据可视化中,我们经常会遇到数据缺失的情况,这个功能非常实用,可以帮助我们在数据不完整的情况下仍然保持图表的连续性。
import pyecharts.options as opts
from pyecharts.charts import Line
from pyecharts.faker import Faker # 生成随机数据
y = Faker.values() # 手动设置空数据点(第4个和第6个值)
y[3], y[5] = None, None # 创建折线图对象
line_chart = Line()# 添加x轴数据
line_chart.add_xaxis(Faker.choose())# 添加折线,设置连接空数据点
line_chart.add_yaxis(series_name="商家A",y_axis=y,is_connect_nones=True, # 关键参数:连接包含空数据的点
)# 设置全局配置
line_chart.set_global_opts(title_opts=opts.TitleOpts(title="连接空数据折线图"),
)# 在notebook中渲染
line_chart.render_notebook()
代码解释:
Faker.values()
生成随机的数值数据y[3], y[5] = None, None
手动将数据中的第4个和第6个值设置为None(空数据)Line()
创建折线图对象add_xaxis(Faker.choose())
添加随机类别数据作为x轴is_connect_nones=True
这是关键参数,设置为True表示连接包含空数据的点,使折线在遇到空值时不会中断set_global_opts
设置图表标题render_notebook()
在Jupyter Notebook中渲染图表
应用场景:
在实际数据分析中,我们经常会遇到数据缺失的情况,如传感器故障、数据采集中断等。连接空数据折线图可以帮助我们在这种情况下仍然展示数据的整体趋势,而不会因为个别缺失值导致图表不连续。这种图表特别适用于展示长期监测数据、实验数据或其他可能存在间隙的数据序列。
注意事项:
虽然连接空数据可以保持图表的连续性,但在解读数据时需要注意,空值位置的折线是推测出来的,并非实际测量值。在正式报告中,最好明确标注数据缺失的位置,以避免误导读者。
图表5:对数轴示例
第五个图表展示了如何使用对数轴来可视化指数增长的数据。对数轴特别适合展示跨度很大的数据,能够清晰地显示数据的相对变化趋势。
import pyecharts.options as opts
from pyecharts.charts import Line"""
Gallery 使用 pyecharts 1.1.0
参考地址: `https://echarts.apache.org/examples/editor.html?c=line-log` 目前无法实现的功能:1、暂无
"""x_data = ["一", "二", "三", "四", "五", "六", "七", "八", "九"]
y_data_3 = [1, 3, 9, 27, 81, 247, 741, 2223, 6669]
y_data_2 = [1, 2, 4, 8, 16, 32, 64, 128, 256]
y_data_05 = [1 / 2, 1 / 4, 1 / 8, 1 / 16, 1 / 32, 1 / 64, 1 / 128, 1 / 256, 1 / 512](Line().add_xaxis(xaxis_data=x_data).add_yaxis(series_name="1/2的指数",y_axis=y_data_05,linestyle_opts=opts.LineStyleOpts(width=2),)
# 创建折线图对象
line_chart = Line()# 添加x轴数据
line_chart.add_xaxis(xaxis_data=x_data)# 添加第一条折线(1/2的指数)
line_chart.add_yaxis(series_name="1/2的指数",y_axis=y_data_05,linestyle_opts=opts.LineStyleOpts(width=2),
)# 添加第二条折线(2的指数)
line_chart.add_yaxis(series_name="2的指数",y_axis=y_data_2,linestyle_opts=opts.LineStyleOpts(width=2),
)# 添加第三条折线(3的指数)
line_chart.add_yaxis(series_name="3的指数",y_axis=y_data_3,linestyle_opts=opts.LineStyleOpts(width=2),
)# 设置全局配置
line_chart.set_global_opts(title_opts=opts.TitleOpts(title="对数轴示例", pos_left="center"),tooltip_opts=opts.TooltipOpts(trigger="item", formatter="{a} <br/>{b} : {c}"),legend_opts=opts.LegendOpts(pos_left="left"),xaxis_opts=opts.AxisOpts(type_="category", name="x轴"),yaxis_opts=opts.AxisOpts(type_="log", # 关键参数:设置y轴为对数坐标轴name="y轴(对数)",splitline_opts=opts.SplitLineOpts(is_show=True),is_scale=True,),
)# 在notebook中渲染
line_chart.render_notebook()
代码解释:
x_data
定义了x轴的中文数字数据点y_data_3
,y_data_2
,y_data_05
分别定义了三条折线的数据:y_data_3
: 3的指数增长数据y_data_2
: 2的指数增长数据y_data_05
: 1/2的指数衰减数据
Line()
创建折线图对象并赋值给line_chart
变量add_xaxis
添加x轴数据add_yaxis
三次调用添加三条不同的折线,每条折线设置了线条宽度为2set_global_opts
设置全局配置:type_="log"
设置y轴为对数坐标轴,这是本图表的核心配置splitline_opts=opts.SplitLineOpts(is_show=True)
显示坐标轴分割线,提高可读性is_scale=True
启用坐标轴缩放
应用场景:
对数轴图表特别适合以下场景:
- 指数增长数据:如人口增长、投资复利增长、细菌繁殖等
- 大范围数据:当数据值跨越多个数量级时,对数轴可以清晰展示所有数据点
- 比率变化:对数轴上的等距间隔代表相同的比率变化,便于观察相对变化趋势
- 科学数据:在物理学、化学、生物学等领域,许多自然现象遵循指数规律
注意事项:
- 对数轴不能显示零或负数,因为对数函数在这些值上没有定义
- 使用对数轴时,应明确标注坐标轴类型,避免误导读者
- 对数变换会改变数据的相对关系,解读时需注意原始数据的尺度
- 对于习惯线性思维的读者,可能需要提供适当的解释说明对数轴的特点
通过对数轴的使用,我们可以更清晰地观察指数增长数据的趋势和差异,这在常规线性坐标轴上往往难以实现。
结语
本文介绍了使用pyecharts创建五种不同风格的折线图的方法,从基础到高级,涵盖了多种实用场景:
- 气温变化折线图:展示了如何添加多条折线、标记点和标记线,适合对比多个相关指标的变化趋势。
- 面积图:通过填充折线与坐标轴之间的区域,更直观地展示数据的变化趋势和累积效应。
- 基础折线图:简洁明了地展示数据随时间的变化趋势,是数据可视化中最常用的图表类型之一。
- 连接空数据折线图:处理数据中的空值,保持图表的连续性,适用于存在数据缺失的场景。
- 对数轴示例:使用对数坐标轴可视化指数增长数据,特别适合展示跨度很大的数据和相对变化趋势。
通过这些示例,您可以掌握pyecharts折线图的核心功能和配置选项,并根据实际需求灵活应用。数据可视化是数据分析的重要环节,希望本文能帮助您创建更直观、更有洞察力的可视化图表。
鼓励您进一步探索pyecharts的其他功能,结合自己的业务场景,创造出更具价值的数据可视化作品。