Python进阶教程:20_pyecharts 可视化模块 零基础超详细教程
pyecharts 是基于百度开源的 ECharts 图表库封装的 Python 可视化工具可以用极少的代码生成交互式、高颜值的网页图表支持折线图、柱状图、饼图、地图、热力图等几十种图表类型完美解决 matplotlib 中文乱码、静态无交互、颜值低的痛点非常适合做数据报告、网页嵌入、数据分析展示。本文从安装、核心概念到常用图表、配置技巧全程配完整可运行代码 逐行解释零基础也能快速上手做出专业级图表。一、模块基础说明1. 核心优势✅交互性强生成的是 HTML 网页鼠标悬停显示数值、支持放大缩小、数据筛选、一键保存图片✅中文友好原生支持中文不需要额外配置字体完全不会乱码✅图表丰富支持几十种常规图表 地理图表满足绝大多数可视化需求✅语法简洁链式调用写法逻辑清晰新手容易上手2. 安装pyecharts 是第三方库需要手动安装打开终端 / 命令行执行pip install pyecharts如果需要使用中国地图、世界地图等地理图表还需要额外安装对应地图数据包新手可以先装基础包后面进阶再装# 中国省级地图 pip install echarts-china-provinces-pypkg # 中国市级地图 pip install echarts-china-cities-pypkg # 世界地图 pip install echarts-countries-pypkg3. 核心概念新手先了解图表类每种图表对应一个类比如Line折线图、Bar柱状图用什么图就导入什么类配置项所有细节设置标题、坐标轴、图例、颜色等都通过配置项实现统一用opts.xxx调用链式调用可以把多个方法用点连起来写代码更简洁渲染生成最终的图表文件默认生成 HTML 网页浏览器打开就能交互查看二、入门第一个图表折线图分步详解我们以「本周销售趋势」为例做第一张折线图逐行讲解每一步的作用。完整代码# 1. 导入需要的模块折线图类 配置项模块 from pyecharts.charts import Line from pyecharts import options as opts # 2. 创建折线图实例对象 line_chart Line() # 3. 添加X轴数据类别、日期等横向坐标 line_chart.add_xaxis([周一, 周二, 周三, 周四, 周五, 周六, 周日]) # 4. 添加Y轴数据第一个参数是系列名称第二个是数值列表 line_chart.add_yaxis(门店销售额, [120, 200, 150, 80, 170, 230, 190]) # 5. 设置全局配置这里只加一个标题 line_chart.set_global_opts( title_optsopts.TitleOpts(title本周门店销售趋势) ) # 6. 渲染生成HTML文件默认生成在当前代码同目录 line_chart.render(销售趋势图.html)逐行解释导入模块Line是折线图的类opts是所有配置项的统一入口所有标题、坐标轴、图例都从这里调用创建实例Line()相当于创建了一张空白的折线图画布X 轴数据add_xaxis()传入一个列表对应图表横向的所有分类Y 轴数据add_yaxis()传入系列名称和数值列表想加多条线就多次调用add_yaxis全局配置set_global_opts()用来设置整张图的公共属性比如标题、坐标轴、图例等渲染文件render(文件名.html)会生成一个网页文件双击用浏览器打开就能看到交互式图表运行效果运行代码后同级目录会出现销售趋势图.html打开后鼠标悬停在折线上会自动显示对应日期的销售额右上角可以切换图例、放大、保存为图片支持鼠标拖拽框选局部区域放大简写链式调用写法熟悉之后可以把所有方法连起来写代码更紧凑效果完全一样from pyecharts.charts import Line from pyecharts import options as opts ( Line() .add_xaxis([周一, 周二, 周三, 周四, 周五, 周六, 周日]) .add_yaxis(门店销售额, [120, 200, 150, 80, 170, 230, 190]) .set_global_opts(title_optsopts.TitleOpts(title本周销售趋势)) .render(销售趋势图.html) )三、常用基础图表逐个示例 适用场景pyecharts 所有图表的使用逻辑完全一致创建对象 → 加数据 → 配选项 → 渲染只是图表类名不一样。下面是日常开发最高频的 6 种图表。1. 柱状图 Bar适用场景分类对比、数量排名是最常用的统计图表。示例多系列月度销售额对比from pyecharts.charts import Bar from pyecharts import options as opts bar Bar() # X轴月份 bar.add_xaxis([1月, 2月, 3月, 4月, 5月, 6月]) # 多个Y轴系列线上、线下 bar.add_yaxis(线上渠道, [100, 120, 90, 150, 130, 180]) bar.add_yaxis(线下渠道, [80, 90, 110, 70, 100, 120]) # 设置标题 坐标轴名称 bar.set_global_opts( title_optsopts.TitleOpts(title2024上半年销售额对比), xaxis_optsopts.AxisOpts(name月份), yaxis_optsopts.AxisOpts(name销售额万元) ) bar.render(柱状图.html)解释多次调用add_yaxis就可以实现多系列柱状图每个系列会自动用不同颜色区分右上角可以点击图例隐藏 / 显示对应系列。2. 饼图 Pie适用场景展示占比、比例关系比如各品类销售额占比、用户性别分布。示例商品类别销售额占比from pyecharts.charts import Pie from pyecharts import options as opts pie Pie() # 饼图数据格式列表套元组每个元组是(名称, 数值) data [ (电子产品, 350), (服装鞋帽, 220), (食品生鲜, 280), (家居用品, 150), (其他, 100) ] pie.add(, data) # 设置标签格式{b}是名称{d}是百分比 pie.set_series_opts(label_optsopts.LabelOpts(formatter{b}: {d}%)) pie.set_global_opts(title_optsopts.TitleOpts(title商品类别销售额占比)) pie.render(饼图.html)常用标签占位符{a}系列名称{b}数据项名称{c}数值{d}百分比最常用3. 散点图 Scatter适用场景展示两个变量的相关性、数据分布比如身高体重分布、广告投入和销售额的关系。示例广告投入 vs 销售额from pyecharts.charts import Scatter from pyecharts import options as opts scatter Scatter() # X轴广告投入万元 scatter.add_xaxis([10, 20, 15, 30, 25, 35, 40]) # Y轴对应销售额万元 scatter.add_yaxis(数据点, [80, 150, 110, 200, 180, 230, 260]) scatter.set_global_opts( title_optsopts.TitleOpts(title广告投入与销售额关系), xaxis_optsopts.AxisOpts(name广告投入万元, type_value), yaxis_optsopts.AxisOpts(name销售额万元) ) scatter.render(散点图.html)注意散点图的 X 轴是数值轴需要指定type_value默认是类目轴。4. 折线柱状混合图进阶适用场景同时展示数量和比率比如柱状图展示销售额折线图展示增长率共用 X 轴双 Y 轴。示例销售额 增长率from pyecharts.charts import Bar, Line from pyecharts import options as opts # 1. 先创建柱状图 bar Bar() bar.add_xaxis([1月, 2月, 3月, 4月, 5月, 6月]) bar.add_yaxis(销售额, [100, 120, 90, 150, 130, 180]) # 2. 创建折线图 line Line() line.add_yaxis( 同比增长率, [5, 20, -25, 66.7, -13.3, 38.5], yaxis_index1 # 使用第二个Y轴右侧 ) # 3. 把折线图叠加到柱状图上 bar.overlap(line) # 4. 配置双Y轴 bar.set_global_opts( title_optsopts.TitleOpts(title月度销售额与增长率), yaxis_optsopts.AxisOpts(name销售额万元), # 第二个Y轴在右侧 yaxis_opts2opts.AxisOpts(name增长率%, positionright) ) bar.render(混合图.html)核心方法overlap()可以把其他类型的图表叠加到当前图表上实现混合图表yaxis_index1表示使用第二个 Y 轴。5. 中国地图 Map进阶适用场景展示分地区的数据比如各省份销售额、全国用户分布。注意需要先安装省级地图包pip install echarts-china-provinces-pypkg示例各省份销售额分布from pyecharts.charts import Map from pyecharts import options as opts map_chart Map() # 数据格式(省份名称, 数值)省份名要写标准全称 data [ (广东省, 1200), (北京市, 950), (上海市, 900), (浙江省, 850), (江苏省, 800), (四川省, 600), (湖北省, 550), (山东省, 700) ] # 添加数据指定地图类型为中国 map_chart.add(销售额万元, data, maptypechina) # 配置视觉映射颜色深浅对应数值大小 map_chart.set_global_opts( title_optsopts.TitleOpts(title全国各省份销售额分布), visualmap_optsopts.VisualMapOpts( max_1200, # 最大值 is_piecewiseTrue # 分段显示更直观 ) ) map_chart.render(中国地图.html)解释VisualMapOpts是视觉映射组件可以让数值大小对应颜色深浅一眼就能看出哪个省份数据高、哪个低。四、核心配置项详解常用必学pyecharts 的所有细节都通过配置项控制分为全局配置项整张图的设置和系列配置项单个数据系列的设置新手掌握最常用的几个即可。1. 全局配置项set_global_opts表格配置类作用常用参数TitleOpts标题设置title 主标题、subtitle 副标题、pos_left 位置AxisOpts坐标轴设置name 坐标轴名称、type_轴类型LegendOpts图例设置is_show 是否显示、pos_left 位置ToolboxOpts工具箱is_show 是否显示内置保存图片、数据视图等VisualMapOpts视觉映射max_最大值、is_piecewise 是否分段TooltipOpts提示框trigger 触发方式、formatter 格式完整配置示例bar.set_global_opts( # 标题 副标题 title_optsopts.TitleOpts( title上半年销售额, subtitle2024年, pos_leftcenter # 标题居中 ), # 显示工具箱可以保存图片、查看数据 toolbox_optsopts.ToolboxOpts(is_showTrue), # 图例放在底部 legend_optsopts.LegendOpts(pos_bottom0%), # 提示框触发方式 tooltip_optsopts.TooltipOpts(triggeraxis) )2. 系列配置项set_series_opts针对单个数据系列的样式、标签、标记点等设置。表格配置类作用LabelOpts数据标签是否显示、显示格式、位置MarkPointOpts标记点标记最大值、最小值MarkLineOpts标记线标记平均线、预警线示例标记最大值、最小值、平均线from pyecharts.charts import Line from pyecharts import options as opts line Line() line.add_xaxis([周一, 周二, 周三, 周四, 周五]) line.add_yaxis(销售额, [120, 200, 150, 80, 170]) # 系列配置标记最大最小值 平均线 line.set_series_opts( label_optsopts.LabelOpts(is_showFalse), # 隐藏每个点的数值标签 markpoint_optsopts.MarkPointOpts( data[ opts.MarkPointItem(type_max, name最大值), opts.MarkPointItem(type_min, name最小值) ] ), markline_optsopts.MarkLineOpts( data[opts.MarkLineItem(type_average, name平均值)] ) ) line.render(带标记的折线图.html)五、实用进阶技巧1. 切换主题pyecharts 内置了多种主题比如暗黑主题、清新主题只需要在初始化图表时指定。from pyecharts.charts import Bar from pyecharts import options as opts from pyecharts.globals import ThemeType # 初始化时指定主题DARK暗黑主题 bar Bar(init_optsopts.InitOpts(themeThemeType.DARK, width1000px, height600px)) bar.add_xaxis([1月, 2月, 3月]) bar.add_yaxis(销售额, [100, 120, 90]) bar.set_global_opts(title_optsopts.TitleOpts(title暗黑主题图表)) bar.render(暗黑主题.html)常用主题LIGHT默认浅色、DARK暗黑、MACARONS马卡龙清新、CHALK粉笔风格2. 数据区域缩放数据量很大时可以加数据缩放组件拖拽查看局部数据bar.set_global_opts( datazoom_optsopts.DataZoomOpts() # 底部滑动条缩放 )3. 渲染到 Jupyter Notebook如果你用 Jupyter 做数据分析不需要生成 HTML直接用render_notebook()就能在笔记本里直接显示图表# 把最后一行的 render() 换成 line.render_notebook()六、新手高频易错点总结1. 版本不兼容pyecharts 0.x 旧版本和 1.x 新版本语法完全不同网上很多老教程是 0.x 的写法新手不要看。现在默认安装的都是 1.x 版本按本文写法即可。2. X 轴 Y 轴数据长度不一致add_xaxis和add_yaxis的列表长度必须一一对应否则会出现数据错位、图表空白。3. 饼图数据格式错误饼图的数据必须是[(名称1, 值1), (名称2, 值2)]格式直接传两个列表会报错。4. 地图用不了没安装对应的地图数据包省份 / 城市名称写错必须是标准全称比如「广东省」不能写「广东」5. 配置项拼写错误所有配置项都在opts模块里比如TitleOpts首字母大写不要写成titleOpts。

相关新闻

最新新闻

日新闻

周新闻

月新闻