技术标签: python中图形绘制技术的应用
Pyecharts 组合图形绘制实践
大家好,之前跟大家分享了用 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,SymbolType
import 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 这个视化神器。
文章浏览阅读3.2k次。本文研究全球与中国市场分布式光纤传感器的发展现状及未来发展趋势,分别从生产和消费的角度分析分布式光纤传感器的主要生产地区、主要消费地区以及主要的生产商。重点分析全球与中国市场的主要厂商产品特点、产品规格、不同规格产品的价格、产量、产值及全球和中国市场主要生产商的市场份额。主要生产商包括:FISO TechnologiesBrugg KabelSensor HighwayOmnisensAFL GlobalQinetiQ GroupLockheed MartinOSENSA Innovati_预计2026年中国分布式传感器市场规模有多大
文章浏览阅读1.1k次,点赞2次,收藏12次。常用组合逻辑电路结构——为IC设计的延时估计铺垫学习目的:估计模块间的delay,确保写的代码的timing 综合能给到多少HZ,以满足需求!_基4布斯算法代码
文章浏览阅读3.3k次,点赞3次,收藏5次。OpenAI Manager助手(基于SpringBoot和Vue)_chatgpt网页版
文章浏览阅读2.2k次。USACO自1992年举办,到目前为止已经举办了27届,目的是为了帮助美国信息学国家队选拔IOI的队员,目前逐渐发展为全球热门的线上赛事,成为美国大学申请条件下,含金量相当高的官方竞赛。USACO的比赛成绩可以助力计算机专业留学,越来越多的学生进入了康奈尔,麻省理工,普林斯顿,哈佛和耶鲁等大学,这些同学的共同点是他们都参加了美国计算机科学竞赛(USACO),并且取得过非常好的成绩。适合参赛人群USACO适合国内在读学生有意向申请美国大学的或者想锻炼自己编程能力的同学,高三学生也可以参加12月的第_usaco可以多次提交吗
文章浏览阅读394次。1.1 存储程序1.2 创建存储过程1.3 创建自定义函数1.3.1 示例1.4 自定义函数和存储过程的区别1.5 变量的使用1.6 定义条件和处理程序1.6.1 定义条件1.6.1.1 示例1.6.2 定义处理程序1.6.2.1 示例1.7 光标的使用1.7.1 声明光标1.7.2 打开光标1.7.3 使用光标1.7.4 关闭光标1.8 流程控制的使用1.8.1 IF语句1.8.2 CASE语句1.8.3 LOOP语句1.8.4 LEAVE语句1.8.5 ITERATE语句1.8.6 REPEAT语句。_mysql自定义函数和存储过程
文章浏览阅读188次。半导体二极管——集成电路最小组成单元。_本征半导体电流为0
文章浏览阅读2.8k次,点赞3次,收藏18次。游戏水面特效实现方式太多。咱们这边介绍的是一最简单的UV动画(无顶点位移),整个mesh由4个顶点构成。实现了水面效果(左图),不动代码稍微修改下参数和贴图可以实现岩浆效果(右图)。有要思路是1,uv按时间去做正弦波移动2,在1的基础上加个凹凸图混合uv3,在1、2的基础上加个水流方向4,加上对雾效的支持,如没必要请自行删除雾效代码(把包含fog的几行代码删除)S..._unity 岩浆shader
文章浏览阅读5k次。广义线性模型是线性模型的扩展,它通过连接函数建立响应变量的数学期望值与线性组合的预测变量之间的关系。广义线性模型拟合的形式为:其中g(μY)是条件均值的函数(称为连接函数)。另外,你可放松Y为正态分布的假设,改为Y 服从指数分布族中的一种分布即可。设定好连接函数和概率分布后,便可以通过最大似然估计的多次迭代推导出各参数值。在大部分情况下,线性模型就可以通过一系列连续型或类别型预测变量来预测正态分布的响应变量的工作。但是,有时候我们要进行非正态因变量的分析,例如:(1)类别型.._广义线性回归模型
文章浏览阅读69次。环境保护、 保护地球、 校园环保、垃圾分类、绿色家园、等网站的设计与制作。 总结了一些学生网页制作的经验:一般的网页需要融入以下知识点:div+css布局、浮动、定位、高级css、表格、表单及验证、js轮播图、音频 视频 Flash的应用、ul li、下拉导航栏、鼠标划过效果等知识点,网页的风格主题也很全面:如爱好、风景、校园、美食、动漫、游戏、咖啡、音乐、家乡、电影、名人、商城以及个人主页等主题,学生、新手可参考下方页面的布局和设计和HTML源码(有用点赞△) 一套A+的网_垃圾分类网页设计目标怎么写
文章浏览阅读614次,点赞7次,收藏11次。之前找到一个修改 exe 中 DLL地址 的方法, 不太好使,虽然能正确启动, 但无法改变 exe 的工作目录,这就影响了.Net 中很多获取 exe 执行目录来拼接的地址 ( 相对路径 ),比如 wwwroot 和 代码中相对目录还有一些复制到目录的普通文件 等等,它们的地址都会指向原来 exe 的目录, 而不是自定义的 “lib” 目录,根本原因就是没有修改 exe 的工作目录这次来搞一个启动程序,把 .net 的所有东西都放在一个文件夹,在文件夹同级的目录制作一个 exe._.net dll 全局目录
文章浏览阅读1.5k次。本文为转载,原博客地址:http://blog.csdn.net/hujingshuang/article/details/46910259简介 BRIEF是2010年的一篇名为《BRIEF:Binary Robust Independent Elementary Features》的文章中提出,BRIEF是对已检测到的特征点进行描述,它是一种二进制编码的描述子,摈弃了利用区域灰度..._breif description calculation 特征点
文章浏览阅读4.1k次,点赞21次,收藏79次。本文是《基于SpringBoot的房屋租赁管理系统》的配套原创说明文档,可以给应届毕业生提供格式撰写参考,也可以给开发类似系统的朋友们提供功能业务设计思路。_基于spring boot的房屋租赁系统论文