当前位置: 首页 > news >正文

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")

相关文章:

  • 绘制社交元宇宙:陶明解析Soul如何以AI技术重塑虚拟社交体验
  • 构建一个解释器的完整过程:以C语言为核心的技术探索
  • 【R语言】使用ALDEx2对微生物组进行差异分析
  • 【论文#目标检测】YOLO9000: Better, Faster, Stronger
  • QT学习笔记(常用控件)
  • 多语言语料库万卷·丝路2.0开源,数据模态全面升级,搭建文化交流互鉴AI桥梁
  • JAVA中数组(Array)‌ 和 ‌链表(LinkedList)‌ 是两种基础的数据结构
  • 解锁应急管理新境界:AR眼镜与指挥平台的完美融合
  • 系统与网络安全------网络应用基础(1)
  • 【极速版 -- 大模型入门到进阶】GPT + Gradio 聊天机器人从 0 到 1
  • 【第23节】windows网络编程模型(WSAEventSelect模型)
  • A2 最佳学习方法
  • SpringBoot事务原理剖析
  • 力扣刷题-热题100题-第23题(c++、python)
  • 股指期权最后交易日是哪一天?
  • tortoiseSVN、source insignt、J-flash使用
  • 算法 | 蜣螂优化算法原理,引言,公式,算法改进综述,应用场景及matlab完整代码
  • C语言笔记(鹏哥)上课板书+课件汇总(动态内存管理)--数据结构常用
  • 在fedora41中使用最新版本firefox和腾讯翻译插件让英文网页显示中文翻译
  • package-lock.json能否直接删除?
  • 国务院任免国家工作人员:饶权任国家文物局局长
  • 美加征“对等关税”后,调研显示近半外贸企业将减少对美业务
  • 格力电器去年净利增长一成:消费电器营收下滑4%,一季度净利增长26%
  • 玉渊谭天丨“稀土管制让美国慌了”,美军工稀土储备仅够数月
  • 观察|上海算力生态蓬勃发展,如何助力千行百业数智化转型升级
  • 三部门提出17条举措,全力促进高校毕业生等青年就业创业