PyEcharts 数据可视化:从入门到实战

news/2025/2/24 15:37:24

一、PyEcharts 简介

PyEcharts 是基于百度开源可视化库 ECharts 的 Python 数据可视化工具,支持生成交互式的 HTML 格式图表。相较于 Matplotlib 等静态图表库,PyEcharts 具有以下优势:

  • 丰富的图表类型(30+)
  • 动态交互功能(数据筛选、缩放等)
  • 简洁的 API 设计
  • 良好的网页兼容性

二、环境配置

安装命令:

pip install pyecharts

推荐配合 Jupyter Notebook 使用(需安装 jupyter-echarts 插件)或直接生成 HTML 文件。


三、核心概念解析

1. Chart 类体系

PyEcharts 提供 Bar, Line, Pie, Scatter 等类对应不同图表类型,均继承自基类 Chart

2. 配置项(Option)

通过 set_global_opts()set_series_opts() 配置图表:

from pyecharts.charts import Bar

bar = Bar()
bar.set_global_opts(
    title_opts={"text": "销售数据"},
    toolbox_opts={"show": True}  # 显示工具箱
)

3. 数据格式

支持多种数据格式:

# 方式1:分别添加 X/Y 轴
bar.add_xaxis(["手机", "电脑", "平板"])
bar.add_yaxis("销售额", [1200, 800, 450])

# 方式2:二维数据
bar.add("", [["手机",1200], ["电脑",800], ["平板",450]])

四、实战案例

案例1:动态折线图 - 股票价格趋势

from pyecharts.charts import Line
import numpy as np

dates = pd.date_range("2023-01-01", periods=30).strftime("%m-%d").tolist()
prices = np.random.randn(30).cumsum() + 100  # 模拟股价

line = (
    Line()
    .add_xaxis(dates)
    .add_yaxis("股价", prices, is_smooth=True)
    .set_global_opts(
        title_opts={"text": "股票价格趋势"},
        datazoom_opts=[{"type": "inside"}],  # 内置缩放
        tooltip_opts={"trigger": "axis"}
    )
)
line.render("stock.html")

生成可缩放、提示数据点的动态折线图。


案例2:多层饼图 - 人口结构分析

from pyecharts.charts import Pie

data = [
    ("0-14岁", 17.3),
    ("15-64岁", 68.3),
    ("65岁以上", 14.4)
]

pie = (
    Pie()
    .add(
        series_name="年龄分布",
        data_pair=data,
        radius=["30%", "55%"],  # 环形饼图
        label_opts={"formatter": "{b}: {d}%"}
    )
    .set_global_opts(
        title_opts={"text": "中国人口年龄结构(2023)"},
        legend_opts={"orient": "vertical", "left": "right"}
    )
)
pie.render("population.html")

创建带百分比标签的环形饼图,适合展示比例数据。


案例3:热力地图 - 疫情数据可视化

from pyecharts.charts import Map

province_data = [
    ("广东", 1250),
    ("浙江", 890), 
    ("江苏", 760),
    ("湖北", 430)
]

map_chart = (
    Map()
    .add(
        "确诊病例", 
        province_data,
        maptype="china",
        is_map_symbol_show=False
    )
    .set_global_opts(
        visualmap_opts={
            "min": 0,
            "max": 1500,
            "range_text": ["高", "低"],
            "is_calculable": True,
            "color": ["#FFE4B5", "#FF4500"]
        }
    )
)
map_chart.render("covid_map.html")

生成颜色渐变的中国疫情分布图,直观显示区域差异。


五、进阶技巧

  1. 组合图表:使用 Grid 类实现多图表联动

    from pyecharts.charts import Grid
    
    grid = Grid()
    grid.add(bar, grid_opts={"left": "55%"}).add(line)
    
  2. 时间轴:创建动态演变图表

    from pyecharts.charts import Timeline
    
    timeline = Timeline()
    timeline.add_schema(play_interval=1000)  # 自动播放间隔
    
  3. 自定义主题

    from pyecharts import options as opts
    from pyecharts.globals import ThemeType
    
    bar = Bar(init_opts=opts.InitOpts(theme=ThemeType.LIGHT))
    

六、注意事项

  1. 版本兼容性:PyEcharts v1.x 与 v0.x 的 API 差异较大,建议使用最新版
  2. 大数据优化:当数据量 > 10万时,建议启用 WebGL 渲染
  3. 部署建议:通过 Flask/Django 集成时,使用 render_embed() 生成代码片段

通过以上方法和案例,开发者可以快速实现专业级的数据可视化效果。官方文档(https://pyecharts.org)提供了完整的 API 参考和示例库,推荐深入学习。


通过实践这些案例,您将能够轻松应对常见的数据可视化需求。PyEcharts 的灵活性和表现力使其成为Python可视化生态中的重要工具,特别适合需要交互性的网页应用场景。


http://www.niftyadmin.cn/n/5864538.html

相关文章

安全生产月安全知识竞赛主持稿串词

女:尊敬的各位领导、各位来宾 男:各位参赛选手、观众朋友们 合:大家好~ 女:安全是天,有了这一份天,我们的员工就会多一份幸福, 我们的企业就会多一丝光彩。 男:安全是地,有了这一片地,我们的员工就多了一…

HTML列表,表格和表单

列表 在 HTML 中,列表(List)是常见的一种布局方式。列表分为两种类型:有序列表(Ordered List)和无序列表(Unordered List)。 无序列表 无序列表(Unordered List&#…

2025最新Python机器视觉实战:基于OpenCV与YOLOv8的实时目标检测与跟踪(附完整代码)

2025最新Python机器视觉实战:基于OpenCV与YOLOv8的实时目标检测与跟踪(附完整代码) 摘要:本文基于OpenCV与YOLOv8模型,实现实时目标检测与跟踪功能,支持多类别目标识别与运动轨迹绘制。代码兼容Python 3.7+,步骤清晰且经过稳定性测试,适合中高级开发者参考。所有依赖库…

LeetCode 热题 100 160. 相交链表

LeetCode 热题 100 | 160. 相交链表 大家好,今天我们来解决一道经典的算法题——相交链表。这道题在LeetCode上被标记为简单难度,要求我们找到两个单链表相交的起始节点。如果两个链表没有相交,则返回 null。下面我将详细讲解解题思路&#…

深度学习训练camp:第R4周: Pytorch实现:LSTM-火灾温度预测

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 任务说明 数据集中提供了火灾温度(Tem1)、一氧化碳浓度(CO 1)、烟雾浓度(Soot 1)随着时…

NI Multisim仿真实现39计数器

功能需求 39进制计数器。 功能分析 (1)时钟信号产生电路:用555定时器产生时钟脉冲 2)计数器: 用两片74160先串接起来构成一个百进制计数器;再用置数法接成39进制计数器。(可用开关控制计数器…

会话对象 Cookie 四、Cookie的路径

1.Cookie的path属性 Cookie还有一个path属性,可以通过Cookie#setPath(String)方法来设置。你可以使用HttpWatch查看响应中的Set-Cookie中是否存在路径。下面是通过Chrome查看Cookie信息。 也就是说,就算你不设置Cookie的path,Cookie也是有路…

设计模式-observer模式(观察者模式)

解释 观察者模式用于建立对象间的一对多依赖,当主题(Subject)状态变化时,所有观察者(Observers)自动收到通知。 Observer 模式应该可以说是应用最多、影响最广的模式之一,因为 Observer 的一个…