PyeCharts基础语法
目录
一、基础语法结构
1. 导入库与图表类
2. 创建图表对象
3. 添加数据
4. 设置配置项
5. 渲染图表
二、常用图表类型及语法示例
1. 柱状图(Bar)
2. 折线图(Line)
3. 饼图(Pie)
4. 散点图(Scatter)
5. 地图(Map)
三、配置项详解
1. 全局配置项
2. 系列配置项
四、链式调用与API设计优势
五、使用示例
1. 复杂关系图
2. 3D散点图
3. 仪表盘
PyeCharts
是一个用于生成 Echarts 图表的 Python 库,Echarts 是由百度开发的一个基于 JavaScript 的开源可视化库。通过 PyeCharts
,我们可以在 Python 中使用类似的数据结构来创建丰富的图表,并将其嵌入到网页或其他支持 HTML 渲染的地方。
一、基础语法结构
PyEcharts 的核心设计理念是链式调用和配置驱动,通过简洁的语法快速生成复杂图表。基础流程如下:
1. 导入库与图表类
from pyecharts.charts import Bar, Line, Pie # 导入图表类型
from pyecharts import options as opts # 导入配置项
2. 创建图表对象
bar = Bar() # 创建一个柱状图对象
3. 添加数据
bar.add_xaxis(["苹果", "香蕉", "草莓"]) # X轴数据
bar.add_yaxis("单价", [10, 5, 20]) # Y轴数据
4. 设置配置项
bar.set_global_opts(
title_opts=opts.TitleOpts(title="商品销售统计"), # 标题
xaxis_opts=opts.AxisOpts(name="商品类别") # X轴标签
)
5. 渲染图表
bar.render("bar_chart.html") # 生成HTML文件
二、常用图表类型及语法示例
1. 柱状图(Bar)
bar = Bar()
bar.add_xaxis(["A", "B", "C"])
bar.add_yaxis("系列1", [10, 20, 30])
bar.add_yaxis("系列2", [15, 25, 35], stack="stack1") # 堆叠柱状图
bar.render("bar.html")
2. 折线图(Line)
line = Line()
line.add_xaxis(["周一", "周二", "周三"])
line.add_yaxis("温度", [25, 30, 28], is_smooth=True) # 平滑曲线
line.set_global_opts(
tooltip_opts=opts.TooltipOpts(trigger="axis") # 提示框配置
)
line.render("line.html")
3. 饼图(Pie)
pie = Pie()
pie.add("", [("苹果", 10), ("香蕉", 5), ("草莓", 20)])
pie.set_global_opts(
legend_opts=opts.LegendOpts(orient="vertical") # 图例垂直显示
)
pie.render("pie.html")
4. 散点图(Scatter)
scatter = Scatter()
scatter.add_xaxis([10, 20, 30, 40, 50])
scatter.add_yaxis("分布", [5, 15, 25, 35, 45])
scatter.set_global_opts(
xaxis_opts=opts.AxisOpts(type_="value") # X轴为数值类型
)
scatter.render("scatter.html")
5. 地图(Map)
from pyecharts.charts import Map
map_chart = Map()
map_chart.add("确诊数", [("广东", 100), ("北京", 80), ("上海", 60)], "china")
map_chart.render("map.html")
三、配置项详解
PyeCharts 的配置分为 全局配置(set_global_opts)和系列配置(set_series_opts),支持 40+ 种配置项。
1. 全局配置项
-
标题:TitleOpts
title_opts=opts.TitleOpts(title="主标题", subtitle="副标题")
-
图例:LegendOpts
legend_opts=opts.LegendOpts(pos_top="10%", orient="horizontal") # 位置与布局
-
工具箱:ToolboxOpts
toolbox_opts=opts.ToolboxOpts(is_show=True, feature=opts.ToolboxFeatureOpts(data_zoom=True)) # 显示缩放工具
-
视觉映射:VisualMapOpts
visualmap_opts=opts.VisualMapOpts(max_=100, min_=0, range_color=["#313695", "#d7191c"]) # 颜色映射
2. 系列配置项
-
标签样式:LabelOpts
label_opts=opts.LabelOpts(is_show=True, position="top", color="blue")
-
标记点:MarkPointOpts
markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="max", name="峰值")])
-
线条样式:LineStyleOpts
line_style_opts=opts.LineStyleOpts(color="#FF0000", width=2, type_="dashed")
四、链式调用与API设计优势
PyeCharts 的链式语法使代码更简洁,例如:
(
Bar()
.add_xaxis(["A", "B", "C"])
.add_yaxis("系列", [1, 2, 3])
.set_global_opts(title_opts=opts.TitleOpts(title="链式调用示例"))
.render("chain.html")
)
优势:
-
代码紧凑:减少中间变量,逻辑更清晰。
-
易维护:修改配置时只需调整对应方法。
-
支持Jupyter:直接在 Notebook 中渲染图表。
五、使用示例
1. 复杂关系图
from pyecharts.charts import Graph
nodes = [{"id": "A", "name": "A"}, {"id": "B", "name": "B"}]
links = [{"source": "A", "target": "B"}]
graph = Graph().add("", nodes, links).set_global_opts(title_opts=opts.TitleOpts(title="关系图"))
graph.render("graph.html")
2. 3D散点图
from pyecharts.charts import Scatter3D
data = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
scatter3d = Scatter3D().add("点", data).set_global_opts(
visualmap_opts=opts.VisualMapOpts(max_=9, min_=1)
)
scatter3d.render("scatter3d.html")
3. 仪表盘
from pyecharts.charts import Page, Grid
page = Page()
grid = Grid()
grid.add(bar, grid_opts=opts.GridOpts(pos_left="5%"))
grid.add(line, grid_opts=opts.GridOpts(pos_right="5%"))
page.add(grid)
page.render("dashboard.html")