来源:Python数据之道

作者:Peter

整理:Lemon

Pyecharts 组合图形绘制实践

大家好,之前跟大家分享了用 Pyecharts 绘制桑基图和饼图:

  • 炫酷!用Python制作漂亮的流动桑基图

  • 惊叹,Pyecharts绘制饼图原来可以如此漂亮!

有同学提了一个问题,在 Pyecharts 中如何绘制多个图形,今天我们来分享下组合图的绘制。

在实际的工作需求中,我们经常需要绘制多个甚至多种不同类型的图形,有时候还需要将它们放在一个页面中,达到一个可视化看板的效果。

在本文中将利用 pyecharts 来实现这个需求,同时满足动态可视化的效果,再次感受这个可视化神器的强大之处,让你真正爱上它。

01 环境

  • Python 3.7

  • Jupyter notebook

  • Pandas 1.1.3

  • pyecharts 1.7.1

  • pyecharts-jupyter-installer 0.0.3

这里提醒下:

pyecharts 的版本一定要保持一致,非常重要!

pyecharts 的版本一定要保持一致,非常重要!

pyecharts 的版本一定要保持一致,非常重要!

在安装的时候可以直接指定版本号,防止出意外

02 单个图形制作

在下面的文章部门我们先逐个绘制多种不同的图形,这些图形的绘制不会涉及到太多的配置项,本文中的重点是如何将不同类型的图形组合在一起。这些图形包含:

  • 柱状图

  • 饼图

  • 折线图

  • 热力图

  • 漏斗图

  • 仪表盘

导入库

在进行绘制数据处理和绘图之前,我们还是需要先导入各种库:

from pyecharts.globals import CurrentConfig, OnlineHostType   # 事先导入,防止不出图
from pyecharts import options as opts  # 配置项
from pyecharts.charts import Bar, Pie, Line, HeatMap, Funnel, Gauge, Grid, Page  # 各个图形的类
from pyecharts.faker import Faker  # 自身数据
from pyecharts.commons.utils import JsCode
from pyecharts.globals import ThemeType,SymbolTypeimport pandas as pd
import numpy as np
import random

模拟数据

首先我们模拟一份简单的数据:通过下面的方式我们可以掌握如何利用pandas快速生成一个DataFrame数据

柱状图

柱状图的制作使用的是 Bar 方法:

bar = (Bar().add_xaxis(df['消费'].tolist()).add_yaxis("5大开支",df['数据'].tolist()).set_global_opts(title_opts=opts.TitleOpts(title="Bar-月度开支"),legend_opts=opts.LegendOpts(is_show=False),)
)bar.render_notebook()

饼图

饼图的制作使用的是Pie:

pie = (Pie().add("", [list(z) for z in zip(df['消费'].tolist(), df['数据'].tolist())]).set_global_opts(title_opts=opts.TitleOpts(title="Pie-月度开支")).set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
)pie.render_notebook()

饼图视频:

折线图

折线图的制作使用的是 Line:

line = (Line().add_xaxis(df['消费'].tolist()).add_yaxis("月度开支", df['数据'].tolist()).set_global_opts(title_opts=opts.TitleOpts(title="Line-月度开支"))
)line.render_notebook()

热力图

热力图使用的是HeatMap()方法,在这里我们使用的是pyecharts中自带的数据:

print(Faker.week)
print(Faker.clock)

# 0-50 的随机数+列表推导式# 两层的列表推导式
value = [[i, j, random.randint(0, 50)] for i in range(24) for j in range(7)]heatmap = (HeatMap().add_xaxis(Faker.clock)   # 横轴标签.add_yaxis("热力图", Faker.week, value)   # 传入两个列表数据.set_global_opts(title_opts=opts.TitleOpts(title="HeatMap-热力图"),visualmap_opts=opts.VisualMapOpts(),)
)heatmap.render_notebook()

热力图视频:

漏斗图

漏斗图在用户画像中运用的非常广,尤其是在电商领域中,从访问、浏览到最终的支付成功等一系列的操作构成一个漏斗,在这里我们模拟一份数据来绘制漏斗图,先生成一个模拟数据:

绘图代码如下:

funnel = (Funnel().add("商城漏斗", [list(z) for z in zip(df1['操作'].tolist(), df1['人数'].tolist())]).set_global_opts(title_opts=opts.TitleOpts(title="商城用户漏斗分析"))
)funnel.render_notebook()

漏斗图视频:

仪表盘

在这里我们采用官方中的一个实例来制作简单的仪表盘:

gauge = (Gauge().add("", [("完成率", 80)]).set_global_opts(title_opts=opts.TitleOpts(title="Gauge-仪表盘"))
)gauge.render_notebook()

03 组合绘图

在上面我们通过不同的方法绘制出了各种不同的图形,都是动态可视化的,非常精美的。下面我们通过 Page 类来将上面的多种图形来放到一个可视化看板中。

1、首先给出整体的绘图代码

# 1、柱状图
def barPage() -> Bar: bar = (Bar().add_xaxis(df['消费'].tolist()).add_yaxis("5大开支",df['数据'].tolist()).set_global_opts(title_opts=opts.TitleOpts(title="Bar-月度开支"),legend_opts=opts.LegendOpts(is_show=False),))return bar# 2、饼图
def piePage() -> Pie:pie = (Pie().add("", [list(z) for z in zip(df['消费'].tolist(), df['数据'].tolist())]).set_global_opts(title_opts=opts.TitleOpts(title="Pie-月度开支")).set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}")))return pie# 3、折线图
def linePage() -> Line:line = (Line().add_xaxis(df['消费'].tolist()).add_yaxis("月度开支", df['数据'].tolist()).set_global_opts(title_opts=opts.TitleOpts(title="Line-月度开支")))return line# 4、热力图def heatmapPage() -> HeatMap:value = [[i, j, random.randint(0, 50)] for i in range(24) for j in range(7)]heatmap = (HeatMap().add_xaxis(Faker.clock).add_yaxis("热力图", Faker.week, value).set_global_opts(title_opts=opts.TitleOpts(title="HeatMap-热力图"),visualmap_opts=opts.VisualMapOpts(),))return heatmap# 5、漏斗图
def funnelPage() -> Funnel:funnel = (Funnel().add("商品", [list(z) for z in zip(Faker.choose(), Faker.values())]).set_global_opts(title_opts=opts.TitleOpts(title="Funnel-漏斗图")))return funnel# 6、仪表盘
def gaugePage() -> Gauge:gauge = (Gauge().add("", [("完成率", 80)]).set_global_opts(title_opts=opts.TitleOpts(title="Gauge-仪表盘")))return gauge# 上面是6个图形的代码,下面利用Page进行组合
# !!! 关键步骤
page = (Page(layout=Page.DraggablePageLayout).add(barPage(),piePage(),linePage(),funnelPage(),heatmapPage(),gaugePage())
)page.render("page_demo.html")

2、现在解释一下上面的代码:

  • 柱状图、饼图等不同的图形我们封装成不同的函数来实现

  • 使用Page类的add方法,添加上面的各个函数

  • 最后使用page.render()来生成一个html文件,就是我们的各个图形下一个html页面中

现在看看生成的组合图形1的效果

组合图形1:

在目前生成的组合图形1中,要注意4点:

  • 左上角有个save config的按钮,接下来这个按钮大有用处

  • 整体的图形是单个上下排列的,且整体靠左,右边很多的空白

  • 每个图形都是虚线框,这表示图形可变大小,同时可以移动的

  • 整体需要上下滑动来浏览全部的图形,视觉效果不佳

下面我们通过save config按钮来进行改动,生成一个我们自己想看到的组合图形2效果:

组合图形2:

当我们把图形按照我们的需求排列OK之后,此时图形仍然没有被固定下来,如果我们刷新当前页面,又会变成组合图形1的效果。

现在点击save config按钮,保存我们的配置文件。此时会在本地当前目录下生成一个chart_config.json的配置文件。

接下来我们利用这个配置来生成上面我们想要达到的效果图形,将图形的格式固定下来,使用下面的代码:

Page.save_resize_html("page_demo.html",   # 上面的HTML文件名称cfg_file="chart_config.json",  # 保存的json配置文件dest="new_page_demo.html")  # 新HTML文件名称

jupyter notebook中再运行一次,这样我们就将图形的格式固定下来了。通过这种方式我们可以设置图形的任意大小和位置,部分截图如下:

本文结合各种图形的简单制作,最终使用 Page 将各种图形组合在一起,形成了一个可视化看板的效果,希望对大家掌握 Pyecharts 的使用有所帮助,真正在实际工作中使用到 Pyecharts 这个视化神器。

作者简介

Peter,硕士毕业僧一枚,从电子专业自学Python入门数据行业,擅长数据分析及可视化。喜欢数据,坚持跑步,热爱阅读,乐观生活。个人格言:不浮于世,不负于己

个人站点:www.renpeter.cn,欢迎常来小屋逛逛

本文来自公众号读者投稿,欢迎各位童鞋向公号投稿,点击下面图片了解详情!

---------End---------

公众号后台回复「微信群」,将邀请加入读者交流群。

  • 《Python知识手册》

  • 《Matplotlib可视化指南》

  • 《Plotly可视化指南》

  • 《Pandas使用指南》

  • 《机器学习精选》

????分享、点赞、在看,给个三连击呗!???? 

Pyecharts 组合图形绘制实践相关推荐

  1. 【Python】Pyecharts 组合图形绘制实践

    来源:Python数据之道 作者:Peter 整理:Lemon Pyecharts 组合图形绘制实践 大家好,之前跟大家分享了用 Pyecharts 绘制桑基图和饼图: 炫酷!用Python制作漂亮的 ...

  2. 蓝桥杯例题练习(入门)--正十二边形和正三角形的组合图形绘制

    题目:绘制如下图形,其中正十二边形边长50,用红色填充,正三角形用黄色填充,绘制过程中隐藏画笔,本题出自第十一届蓝桥杯 首先,由于绘制图形基本构成规律明显,可以将其拆分成正十二边形和正三角形绘制 1, ...

  3. html5 Canvas 绘制基本图形 从直线图形到使用路径 - 直线、矩形、路径、多边形、复杂组合图形

    html5: Canvas 绘制基本图形 从绘制直线 到 路径 Jack Lee 的 CSDN 博客 邮箱 :291148484@163.com CSDN 主页:https://blog.csdn.n ...

  4. python动态横道图_用Python pyecharts v1.x 绘制图形【转】

    关于pyecharts pyecharts是一个用于生成echart(百度开源的数据可视化javascript库)图表的类库.pyecharts 分为 v0.5.x 和 v1.x 两个大版本,版本不兼 ...

  5. 蓝桥杯例题练习(入门)--绘制六边形与正三角形的组合图形

    绘制组合图形如下,要求正六边形内部红色填充,等边三角形绿色填充,边长150,要求绘制过程中隐藏画笔 首先对其进行拆解拆解,本图形由正三角形与正六边形组成,基本图形规律较为明显,为了方便填充,我们先从内 ...

  6. 【Android】PorterDuffXfermode使用(通过消除背景层与重叠部分绘制组合图形)

    利用PorterDuffXfermode,绘制组合图形,过程我分成了4个步骤(onDraw方法里面): 1.通过canvas.saveLayout()先绘制一个背景图层(这里位置大小很重要,应该根据覆 ...

  7. 用Python pyecharts v1.x 绘制图形(二):折线图、折线面积图、散点图、雷达图、箱线图、词云图

    文章目录 关于pyecharts 折线图 折线面积图 散点图 雷达图 箱线图 词云图 其他 关于pyecharts pyecharts是一个用于生成echart(百度开源的数据可视化javascrip ...

  8. 用python画组合图形的面积_漂亮图表也可用python信手拈来!一文教你学会用Python绘制堆积折线图...

    今天,和大家聊聊关于Python绘图相关的东东哦,还是和大家继续深耕Python经典的matplotlib库哦! 好啦,咱们就开始吧! 首先,咱们聊聊如何在Python中去绘制经典的堆积折线图 到这可 ...

  9. python组合图形的创建

    目录 前言 一.导入需要用到的库 二.层叠组件 Ⅰ.导入数据 Ⅱ.更改X轴数据 Ⅲ. 使用rate_of_rise函数 Ⅳ.调用overlap组件的方法 三.组合组件 Ⅰ.前三步与层叠组件一样 Ⅱ.将 ...

最新文章

  1. 面试必考之http状态码有哪些
  2. 设置TextView下划线并响应点击事件(SpannableString)
  3. 【架构】阿里中台内容整理(部分)
  4. Python内存相关
  5. 设备树和pinctrl粗解
  6. 工作137:map函数
  7. 区块链相关问题 理解
  8. 安全数据科学家的日常:需要做什么?将面对哪些挑战?
  9. mvc 前段定义变量_3分钟短文 | Laravel blade模板里优雅地定义PHP变量
  10. 二叉搜索树的后序遍历序列(C++)
  11. fpga开发教程 labview_NI LabVIEW高性能FPGA开发者指南
  12. 液晶显示器测试软件6,屏幕坏点检测工具(Datum pixel repair)
  13. Ceph Calamari Server RPM编译
  14. php页面会返回状态200,服务器404错误页面http状态返回值为200的原因解析
  15. ES5 Array新方法reduce()  数组累加
  16. 这三种创业项目不要轻易涉足
  17. 国产高性能车载应用DCDC电源芯片SCT2432、SCT2432Q
  18. 智能手表音频特性测试_Kido × 蜻蜓FM打造音频内容营销新范本,高效精准助品牌弯道超车...
  19. Parametric model
  20. CSS-- 精灵图和字体图标

热门文章

  1. 【转】编译EDEM2018+Fluent19.0耦合接口
  2. 关于keil常见问题解决方法记录error: #268: declaration may not appear after executable statement in block
  3. css兼容问题收集+部分效果收集+css重置
  4. 重试组件 Spring Retry
  5. 数据恢复西数80GWD800BB-88JHA0二次开盘数据恢复
  6. Hbase学习笔记(一)
  7. 【它山之玉】写科研论文导师不传授的细节-科学网马臻
  8. InnoSetup的简体中文语言文件ChineseSimplified.isl官方下载地址.
  9. 牙科诊所信息管理系统:业务分析
  10. 阿里云天池task4学习笔记