查看全课大纲(第 12 / 45 节)
- 1.课程简介
- 2.环境搭建
- 3.预备知识
- 4.pyecharts初体验
- 5.数据可视化概述
- 6.数据可视化的目标和作用
- 7.数据可视化工具对比分析
- 8.数据可视化基本流程
- 9.数据可视化设计原则
- 10.pyecharts简介
- 11.官方图表样例
- 12.常用图表的基本结构
- 13.数据格式
- 14.图表的分类
- 15.柱状图与条形图
- 16.其他对比图表
- 17.常用配置项(一)
- 18.常用配置项(二)
- 19.折线图 面积图
- 20.K线图
- 21.其他时间图表
- 22.常用配置项
- 23.散点图 气泡图
- 24.热力图
- 25.其他相关性图表
- 26.饼图
- 27.矩形树图
- 28.其他成分比例图表
- 29.箱型图与直方图
- 30.3D柱状图与折线图
- 31.其他统计图表
- 32.地图 Map
- 33.地理坐标系Geo
- 34.3D 地图
- 35.网络关系图
- 36.主题河流图
- 37.词云图
- 38.组合图表组件
- 39.仪表盘相关图表
- 40.项目介绍
- 41.数据准备
- 42.子图制作(一)
- 43.子图制作(二)
- 44.数据大屏制作
- 45.项目总结
常用图表的基本结构
图表的构成
小象实战讲义 · ECharts 数据可视化
在上一节,我们通过官方案例对 pyecharts 绘制的图表有了直观认识。一个清晰、专业的图表并非随意堆砌元素,而是由一系列标准化的组件构成。理解这些组件,是后续灵活配置和定制图表的基础。本节将系统拆解一个交互式图表的基本构成元素,让你在动手编码前,先建立清晰的“蓝图”。
💡 核心导读
- 图表五要素:标题、坐标轴、数据列、提示框和图例是构成一个基础图表的五个核心部分。
- 进阶交互组件:工具箱、区域缩放和视觉映射等组件,能显著提升图表在复杂数据场景下的交互与分析能力。
- 组件与数据的关系:理解每个组件如何与你的数据(如 pandas DataFrame)进行映射和交互,是配置图表的关键。
- 从结构到配置:本节建立的结构化认知,将直接对应到后续 pyecharts 的
opts配置模块。
基础构成:从柱状图看起
我们以一个基础的柱状图为例,来认识图表中最常见的五个组成部分。
# 示例1:基础柱状图的构成元素示意
import pandas as pd
from pyecharts.charts import Bar
from pyecharts import options as opts
# 准备数据
data = {
'category': ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子'],
'sales_A': [120, 132, 101, 134, 90, 230],
'sales_B': [220, 182, 191, 234, 290, 330]
}
df = pd.DataFrame(data)
# 构建图表,并显式配置各元素
bar = (
Bar()
.add_xaxis(df['category'].tolist()) # X轴:类别数据
.add_yaxis("商家A", df['sales_A'].tolist()) # 数据列1
.add_yaxis("商家B", df['sales_B'].tolist()) # 数据列2
.set_global_opts(
title_opts=opts.TitleOpts(title="基础柱状图", subtitle="演示图表构成"), # 标题(含副标题)
xaxis_opts=opts.AxisOpts(name="商品类别"), # X轴配置
yaxis_opts=opts.AxisOpts(name="销售额"), # Y轴配置
tooltip_opts=opts.TooltipOpts(trigger="axis"), # 提示框配置
legend_opts=opts.LegendOpts() # 图例配置
)
)
# 打印图表类型及数据摘要,而非完整HTML
print(f"图表类型: {type(bar).__name__}")
print(f"X轴数据: {df['category'].tolist()}")
print("系列名称: ['商家A', '商家B']")图表类型: Bar
X轴数据: ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子']
系列名称: ['商家A', '商家B']元素解析:
- 标题 (Title):位于图表顶部,用于说明图表的主题。通常包含主标题和可选的副标题。
- 坐标轴 (Axis):定义图表的度量基准。二维图表通常有 X 轴(横轴,常表示类别)和 Y 轴(纵轴,常表示数值)。坐标轴通常包含轴线、刻度线、刻度标签和轴名称。
- 数据列 (Series):图表中实际绘制数据的图形表示。在柱状图中是“柱子”,在折线图中是“线条”。一个图表可以包含多个数据列(系列),用于对比。
- 提示框 (Tooltip):当鼠标悬停在图表的数据点上时,弹出的信息框。它用于展示该点的详细数据,是交互式图表的核心。
- 图例 (Legend):当图表中有多个数据列时,图例通过颜色、形状和文字标识每个数据列,并允许用户通过点击来显示或隐藏对应的数据列。
构成元素的通用性:以折线图为例
同样的五个基础构成元素,也适用于其他类型的图表,如折线图。这体现了 ECharts 设计的一致性。
# 示例2:折线图的构成(强调样式区分)
from pyecharts.charts import Line
line = (
Line()
.add_xaxis(['周一', '周二', '周三', '周四', '周五', '周六', '周日'])
.add_yaxis("最高温度", [11, 11, 15, 13, 12, 13, 10],
linestyle_opts=opts.LineStyleOpts(width=3, type_='dashed'), # 线样式
symbol='triangle', symbol_size=12) # 点样式
.add_yaxis("最低温度", [1, -2, 2, 5, 3, 2, 0],
linestyle_opts=opts.LineStyleOpts(width=2),
symbol='rect', symbol_size=10)
.set_global_opts(
title_opts=opts.TitleOpts(title="一周温度变化"),
yaxis_opts=opts.AxisOpts(name="温度(℃)"),
tooltip_opts=opts.TooltipOpts(trigger="axis"),
legend_opts=opts.LegendOpts()
)
)
print(f"图表类型: {type(line).__name__}")
print("系列数量: 2")
print("系列1线型: dashed")图表类型: Line
系列数量: 2
系列1线型: dashed关键点:在折线图中,除了颜色,我们还可以通过线条样式(实线、虚线)和标记点形状(圆形、三角形、方形)来区分不同的数据列。这在黑白印刷或需要辅助色盲用户识别的场景下尤为重要。
进阶交互组件
当数据量变大或分析需求变复杂时,基础的五要素可能不够用。ECharts 提供了丰富的进阶组件。
1. 工具箱 (Toolbox)
工具箱将常用的交互工具(如数据视图、缩放、还原、保存为图片等)集成在一个面板中,提供给最终用户。
# 示例3:为图表添加工具箱
bar_with_toolbox = (
Bar()
.add_xaxis(df['category'].tolist())
.add_yaxis("商家A", df['sales_A'].tolist())
.set_global_opts(
title_opts=opts.TitleOpts(title="带工具箱的柱状图"),
toolbox_opts=opts.ToolboxOpts( # 配置工具箱
is_show=True,
feature={
"saveAsImage": {}, # 保存为图片
"dataView": {"readOnly": False}, # 数据视图
"restore": {}, # 还原
"dataZoom": {"yAxisIndex": 'none'}, # 区域缩放(仅X轴)
}
)
)
)
print("工具箱已配置,包含功能:", ['saveAsImage', 'dataView', 'restore', 'dataZoom'])工具箱已配置,包含功能: ['saveAsImage', 'dataView', 'restore', 'dataZoom']2. 区域缩放 (DataZoom)
当图表需要展示成百上千个数据点时,全部平铺显示会失去重点。区域缩放组件允许用户通过滑动条或框选,动态地聚焦于数据的某个区间。
# 概念示意:DataZoom 在图表中的位置
图表区域
┌─────────────────────────────────────────────┐
│ 标题 │
├─────────────────────────────────────────────┤
│ (主绘图区,显示数据图形) │
│ │
│ │
├─────────────────────────────────────────────┤
│ [=====|=======] ← 这是 DataZoom 滑动条 │
└─────────────────────────────────────────────┘说明:滑动条控制主绘图区显示的数据范围。
3. 视觉映射 (VisualMap)
视觉映射组件通过一个连续的色带(如蓝-红),将数据的数值大小映射为图形元素的颜色深浅。它常用于热力图、带有颜色维度的散点图或地图,能直观地揭示数据的分布和规律。
# 示例4:使用视觉映射(VisualMap)为柱状图着色
from pyecharts.charts import Bar
import random
random.seed(2026) # 固定随机种子,保证输出可复现
# 生成带数值差异的数据
data_values = [random.randint(20, 100) for _ in range(6)]
categories = ['A产品', 'B产品', 'C产品', 'D产品', 'E产品', 'F产品']
bar_visualmap = (
Bar()
.add_xaxis(categories)
.add_yaxis("销量", data_values)
.set_global_opts(
title_opts=opts.TitleOpts(title="销量分布(颜色映射数值)"),
visualmap_opts=opts.VisualMapOpts( # 配置视觉映射
is_show=True,
min_=min(data_values),
max_=max(data_values),
range_color=['#B5C8F5', '#4A7CF5', '#0037A1'], # 颜色从浅蓝到深蓝
orient='horizontal',
pos_left='center'
)
)
)
print(f"数据值范围: {min(data_values)} ~ {max(data_values)}")
print("视觉映射类型: continuous")数据值范围: 33 ~ 85
视觉映射类型: continuous解读:配置后,柱子的颜色不再固定,而是根据其代表的“销量”数值大小,在定义的蓝色彩系中渐变。数值越大的柱子颜色越深,一眼就能看出“D产品”销量最高。
📝 动手练一练
- 基础配置:请修改“示例1”中的代码,将图表的标题改为“2026年上半年度商品销售对比”,并隐藏副标题。同时,将图例的位置移动到图表的右下角。
- 组件理解:在“示例4”的基础上,如果我们希望颜色映射的方向是“数值越小颜色越深,数值越大颜色越浅”,应该调整哪个配置参数?请尝试修改代码并观察效果。
点击查看参考答案
练习1 参考代码修改部分:
.set_global_opts(
title_opts=opts.TitleOpts(title="2026年上半年度商品销售对比", subtitle=None), # 修改标题,副标题设为None
legend_opts=opts.LegendOpts(pos_right="5%", pos_bottom="5%") # 将图例位置移至右下角
)练习2 思路与参考: 需要调整 visualmap_opts 中的 range_color 列表顺序。原顺序 ['#B5C8F5', '#4A7CF5', '#0037A1'] 是浅到深,对应数值小到大。要反转映射关系,只需将颜色顺序反转即可:
visualmap_opts=opts.VisualMapOpts(
... # 其他配置不变
range_color=['#0037A1', '#4A7CF5', '#B5C8F5'], # 顺序反转:深蓝 -> 中蓝 -> 浅蓝
)修改后,数值最小的柱子将显示为最深的蓝色(#0037A1)。
本章小结
本节我们系统地拆解了一个 ECharts/pyecharts 图表的构成。从标题、坐标轴、数据列、提示框、图例这五个基础骨架,到工具箱、区域缩放、视觉映射等增强肌肉的交互组件,每一个部分都承担着明确的信息传达或交互功能。
📋 行动清单
- 回顾与识别:打开一个商业网站或报告中的复杂图表,尝试识别出本节所学的各个构成元素(标题、图例、提示框等)。
- 思维转换:在下次用 pandas 做完数据分析后,先不要急于写代码,而是用纸笔草图规划一下:你的数据适合用什么图表?这个图表需要哪些必要的构成元素?哪些进阶组件能提升它的表现力?
- 配置预演:在 pyecharts 官方示例库(Gallery)中找一个你感兴趣的复杂图表,在脑海中将其分解为
set_global_opts和set_series_opts中可能包含的配置项。
理解构成是掌握配置的前提。从下一节开始,我们将深入探讨如何将你的数据(尤其是 pandas DataFrame)正确地转换为这些组件所能理解的格式,并开始动手创建你的第一个自定义图表。
—— 小象教研组
