ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

Day 08 · Pyecharts 入门:可交互的中文图表

Day 08 · Pyecharts 入门:可交互的中文图表 「AI Python 系列」第 02 栏 · AI数据可视化全栏 15 篇 · 零成本跟完 作者梅雅达编程笔记首发CSDN摘要Matplotlib和Seaborn画的图是静态的——不能缩放、不能交互。Pyecharts基于百度ECharts天生支持中文画出来的图表可以在浏览器里交互鼠标悬停显示数据、缩放查看细节、点击切换系列。本篇从零开始学Pyecharts安装配置、柱状图、折线图、饼图、散点图每种都给出完整可运行代码。前面学的matplotlib和seaborn画的图都是静态图片。但很多场景你需要交互老板看报表想鼠标悬停看具体数值数据点多想缩放看局部细节多个系列想点击切换显示/隐藏Pyecharts就是为了解决这些问题。它基于百度开源的ECharts天然支持中文而且语法非常简单。一、安装和基本用法pipinstallpyechartsPyecharts的核心思想是链式调用frompyecharts.chartsimportBar bar(Bar().add_xaxis([1月,2月,3月,4月,5月,6月]).add_yaxis(销售额,[12.3,10.1,15.8,14.2,18.6,22.1]).set_global_opts(title_opts{title:月度销售趋势}))bar.render(sales_bar.html)# 生成 HTML 文件打开sales_bar.html你就能在浏览器里看到一个可以交互的柱状图。鼠标悬停会显示具体数值工具栏里有保存图片、数据视图、切换缩放等功能。Pyecharts的图表都是 HTML 文件。render()生成文件在Jupyter里也可以用render_notebook()直接内嵌显示。二、基础图表2.1 柱状图frompyecharts.chartsimportBarfrompyechartsimportoptionsasopts products[商品A,商品B,商品C,商品D]sales[320,280,195,205]bar(Bar().add_xaxis(products).add_yaxis(销量,sales,itemstyle_optsopts.ItemStyleOpts(color#2196F3)).set_global_opts(title_optsopts.TitleOpts(title各商品销量对比),tooltip_optsopts.TooltipOpts(triggeraxis),toolbox_optsopts.ToolboxOpts(is_showTrue),).set_series_opts(label_optsopts.LabelOpts(is_showTrue))# 显示数据标签)bar.render(bar_basic.html)分组柱状图bar(Bar().add_xaxis([商品A,商品B,商品C,商品D]).add_yaxis(线上,[180,150,100,110],category_gap30%).add_yaxis(线下,[100,90,65,70]).add_yaxis(分销,[40,40,30,25]).set_global_opts(title_optsopts.TitleOpts(title各商品分渠道销量),tooltip_optsopts.TooltipOpts(triggeraxis),))bar.render(bar_group.html)只需要多次add_yaxis就能叠加系列。2.2 折线图frompyecharts.chartsimportLine months[1月,2月,3月,4月,5月,6月,7月,8月,9月,10月,11月,12月]sales[12.3,10.1,15.8,14.2,18.6,22.1,19.5,24.3,21.7,26.8,30.2,35.5]line(Line().add_xaxis(months).add_yaxis(销售额,sales,is_smoothTrue,# 平滑曲线areastyle_optsopts.AreaStyleOpts(opacity0.3),# 面积填充label_optsopts.LabelOpts(is_showFalse),itemstyle_optsopts.ItemStyleOpts(color#2196F3)).set_global_opts(title_optsopts.TitleOpts(title全年销售趋势),tooltip_optsopts.TooltipOpts(triggeraxis),xaxis_optsopts.AxisOpts(axislabel_optsopts.LabelOpts(rotate30)),))line.render(line_smooth.html)关键参数is_smoothTrue画平滑曲线而不是折线areastyle_opts面积图填充透明度 0.3xaxis_opts里的rotate30X 轴标签旋转 30° 防止重叠2.3 饼图frompyecharts.chartsimportPie data[(线上,55),(线下,30),(分销,15)]pie(Pie().add(,data,radius[40%,70%],# 环形图留空就是实心饼图label_optsopts.LabelOpts(formatter{b}: {c} ({d}%))).set_global_opts(title_optsopts.TitleOpts(title销售渠道占比),legend_optsopts.LegendOpts(orientvertical,pos_leftleft),).set_colors([#2196F3,#FF5722,#4CAF50]))pie.render(pie_donut.html)radius[40%, 70%]画出来的是环形图。想画实心饼图就去掉这个参数。formatter{b}: {c} ({d}%)表示显示名称: 数值 (百分比)。2.4 散点图frompyecharts.chartsimportScatter prices[59,79,99,129,159,199,249,299]volumes[420,350,280,180,120,85,45,20]scatter(Scatter().add_xaxis(prices).add_yaxis(销量,volumes,symbol_size15,# 点的大小itemstyle_optsopts.ItemStyleOpts(color#2196F3)).set_global_opts(title_optsopts.TitleOpts(title价格 vs 销量),xaxis_optsopts.AxisOpts(name价格元),yaxis_optsopts.AxisOpts(name销量件),tooltip_optsopts.TooltipOpts(formatter{c[0]}元 → {c[1]}件),))scatter.render(scatter.html)三、Jupyter Notebook 中使用如果你在用 Jupyter不需要render()生成文件直接内嵌显示frompyecharts.chartsimportBarfrompyechartsimportoptionsasoptsfrompyecharts.globalsimportRenderType,ThemeType# 关键设置渲染类型为 notebookbar(Bar().add_xaxis([A,B,C]).add_yaxis(销量,[10,20,30]).set_global_opts(title_optsopts.TitleOpts(titleJupyter 内嵌图)))bar.render_notebook()# 注意是 render_notebook()这样图表就会直接显示在 Notebook 的输出单元格里。四、主题和全局配置Pyecharts内置了多种主题frompyecharts.globalsimportThemeType bar(Bar(init_optsopts.InitOpts(themeThemeType.DARK))# 暗色主题.add_xaxis([A,B,C]).add_yaxis(销量,[10,20,30]))常用主题LIGHT默认、DARK、WHITE、MACARONS马卡龙色、ROMA罗马风。常用全局配置frompyechartsimportoptionsasopts chart(Bar().add_xaxis(x_data).add_yaxis(系列名,y_data).set_global_opts(# 标题title_optsopts.TitleOpts(title主标题,subtitle副标题),# 提示框鼠标悬停时显示tooltip_optsopts.TooltipOpts(triggeraxis,# item 或 axisaxis_pointer_typecross# 十字准线),# 工具箱右上角那些按钮toolbox_optsopts.ToolboxOpts(is_showTrue,pos_right5%),# 图例legend_optsopts.LegendOpts(is_showTrue,pos_top10%,orienthorizontal),# 数据区域缩放datazoom_opts[opts.DataZoomOpts(type_slider,range_start0,range_end100),opts.DataZoomOpts(type_inside),# 鼠标滚轮缩放],# 视觉映射颜色映射visualmap_optsopts.VisualMapOpts(is_showTrue,max_100,min_0,orienthorizontal,pos_bottom0%),))五、数据区域缩放数据多时的救星当你有 100 个数据点不可能一次全看清。Pyecharts 的DataZoom组件完美解决这个问题importrandom months[f{i}月foriinrange(1,25)]sales[random.randint(10,50)for_inrange(24)]line(Line().add_xaxis(months).add_yaxis(销售额,sales,is_smoothTrue).set_global_opts(title_optsopts.TitleOpts(title24个月销售趋势),# 底部滑动条缩放datazoom_opts[opts.DataZoomOpts(type_slider,range_start0,range_end50),# 鼠标滚轮/触摸缩放opts.DataZoomOpts(type_inside),],tooltip_optsopts.TooltipOpts(triggeraxis),))line.render(line_datazoom.html)生成的图底部会有一个滑块拖动它就能看到不同时间段的细节。鼠标滚轮也能缩放。六、PyechartsvsMatplotlib对比特性MatplotlibPyecharts输出格式静态图片 (PNG/SVG)HTML 交互页面中文支持需手动配置字体天然支持交互性无悬停、缩放、切换学习曲线API 多较陡链式调用简单统计图表Seaborn配合不如Seaborn丰富适合场景论文、报告、打印Web 展示、仪表盘不是替代关系是互补关系。需要好看的静态图 →matplotlib/seaborn需要交互展示 →pyecharts。七、小结Pyecharts的核心优势就三个字交互式。关键 API 速查图表类名核心方法柱状图Bar()add_xaxis()add_yaxis()折线图Line()is_smoothTrue平滑曲线饼图Pie()radius控制环形/实心散点图Scatter()symbol_size控制点大小通用.set_global_opts()标题/提示框/工具箱/缩放通用.set_series_opts()数据标签/样式记住两件事链式调用.add_xaxis().add_yaxis().set_global_opts().render()Jupyter用render_notebook()独立脚本用render()下一篇讲Pyecharts的进阶功能——地图、时间线、组合图表。下期预告Day 09 Pyecharts 进阶——用 Pyecharts 画中国地图、时间轮播图、多图表组合仪表盘。往期回顾Day 01 · 数据可视化到底在干啥为什么 AI 让它变简单了Day 02环境搭建 Python 数据分析零成本工具包Day 03 · Pandas 快速上手读取、清洗、整理数据 文章已被快递鸟社区收录Day 04 · 数据清洗缺失值、异常值、重复值一站式处理Day 05 · Matplotlib 基础折线图、柱状图、饼图、散点图Day 06 · 图表美化配色、标注、子图布局、中文显示Day 07 · Seaborn 进阶统计图表一行代码搞定专栏-「AI Python 系列」第 02 栏 ·AI数据可视化连载中-「AI Python 系列」第 01 栏 · AI自动化办公连载中-「AI Python 系列」第 03 栏 · Python 爬虫实战连载中资源领取关注作者获取本栏完整代码和数据集原创声明本文为梅雅达编程笔记原创作品未经允许不得转载。
返回列表