Python pyecharts生成折线图HTML:可交互的趋势图
用Python pyecharts生成交互式折线图HTML,支持鼠标悬停、数据缩放、图例切换,输出单文件网页直接浏览器打开,适合做数据大屏和周报。
场景痛点
matplotlib画的折线图是死的静态图,发给同事后他想放大看某一周的波动、想对比两条线的差值,都做不到。pyecharts生成的折线图是HTML网页,鼠标悬停显示精确数值、滚轮缩放区间、点击图例隐藏线条,交互体验好很多。做周报、数据看板、汇报PPT配图,用交互式HTML比静态图专业得多。
用到的库
pip install pyecharts
完整代码
# 导入 pyecharts 折线图和配置
from pyecharts import options as opts
from pyecharts.charts import Line
def draw_interactive_line():
# 模拟30天的网站访问量数据
days = [f"{i}日" for i in range(1, 31)]
pv = [820, 932, 901, 934, 1290, 1330, 1320, 1100, 1080, 1150,
1200, 1250, 1300, 1380, 1400, 1450, 1500, 1480, 1520, 1600,
1650, 1700, 1680, 1720, 1800, 1850, 1900, 1880, 1920, 2000]
uv = [400, 450, 430, 470, 650, 680, 660, 550, 540, 580,
600, 630, 660, 700, 720, 750, 780, 760, 790, 830,
860, 890, 880, 900, 950, 980, 1000, 990, 1010, 1050]
line = (
Line()
.add_xaxis(days)
# is_smooth=True 平滑曲线,否则是折线
.add_yaxis("访问量PV", pv, is_smooth=True,
linestyle_opts=opts.LineStyleOpts(width=3),
label_opts=opts.LabelOpts(is_show=False))
.add_yaxis("独立访客UV", uv, is_smooth=True,
linestyle_opts=opts.LineStyleOpts(width=3),
label_opts=opts.LabelOpts(is_show=False))
.set_global_opts(
title_opts=opts.TitleOpts(title="近30天网站流量趋势", subtitle="单位:次"),
tooltip_opts=opts.TooltipOpts(trigger="axis"), # 悬停显示整列数值
legend_opts=opts.LegendOpts(pos_top="5%"),
# 两侧缩放滑块
datazoom_opts=[
opts.DataZoomOpts(type_="inside"), # 滚轮缩放
opts.DataZoomOpts(type_="slider"), # 底部滑块
],
yaxis_opts=opts.AxisOpts(name="次数"),
xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=45)),
toolbox_opts=opts.ToolboxOpts(),
)
)
line.render("interactive_line.html")
print("交互式折线图已保存为 interactive_line.html")
if __name__ == "__main__":
draw_interactive_line()
代码讲解
Line()创建折线图,add_yaxis()加数据系列,is_smooth=True让线条平滑过渡,否则是硬折线。linestyle_opts=LineStyleOpts(width=3)控制线宽,3像素在网页上看起来比较清晰。label_opts=LabelOpts(is_show=False)关掉数据点上的数值标签,30个点全显示会挤成一团,靠悬停tooltip看数值更干净。DataZoomOpts(type_="inside")支持鼠标滚轮缩放,type_="slider"在底部显示拖动滑块,两种缩放同时开。axislabel_opts(rotate=45)把X轴日期标签旋转45度,30个日期横着排会重叠。render()输出HTML,双击浏览器打开即可,不需要启动本地服务器。
运行结果
当前目录生成 interactive_line.html,浏览器打开后是一条平滑上升的双折线图。鼠标悬停任意日期会同时显示PV和UV数值,滚轮可以缩放局部区间,拖动底部滑块选择查看范围,点击图例可以隐藏某条线。中文标题正常显示。
注意事项
- pyecharts默认从CDN加载ECharts JS,断网环境下打开HTML图表会空白,需要离线部署时把echarts.min.js下载到本地。
- X轴分类超过50个时一定要加
rotate旋转标签,否则全部重叠。 - 如果要嵌入到自己的网页里,用
render_embed()拿到HTML片段,比单独render()整个页面更灵活。 - 数据量上千个点时,折线可能卡顿,可以开启
large=True大数据模式。

更新时间:2026-09-14 20:27:20
上一篇:Python pyecharts生成饼图:环形图玫瑰图交互式