1 一个非常棒的可视化库:PyG2Plot-德赢Vwin官网 网
0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一个非常棒的可视化库:PyG2Plot

科技绿洲 来源:Python实用宝典 作者:Python实用宝典 2023-10-21 11:32 次阅读

给大家推荐的这个开源项目是一个非常棒的可视化库 -- PyG2Plot 。

PyG2Plot 可视化

这个Python可视化新秀,在GitHub上是这样介绍的:

PyG2Plot 是@AntV/G2PlotPython3 上的封装。G2Plot 是一套简单、易用、并具备一定扩展能力和组合能力的统计图表库,基于图形语法理论搭建而成。

不过研究PyG2Plot还得先从G2开始讲,它是蚂蚁金服开源一个基于图形语法,面向数据分析的统计图表引擎。后来又在其基础上,封装出业务上常用的统计图表库——G2Plot

图片

不过现在Python这么热,几乎每一个nb的前端可视化库,最终都会被用python开发一套生成相应html的库!它也不例外,封装出了Python可视化库——PyG2Plot

在GitHub上,也提供了一张示例图,我对右下角的散点图比较感兴趣。

图片

结果兴致勃勃地去看示例,这简直买家秀与卖家秀啊!

图片

我不管,我就要右边那个

自己动手,丰衣足食

看来还是需要自己动手,那就先安装PyG2Plot库吧

pip install pyg2plot

目前目前 pyg2plot 只提供简单的一个 API,只列出需要的参数

  • Plot
  1. Plot(plot_type: str) : 获取 Plot 对应的类实例。
  2. plot.set_options(options: object) : 给图表实例设置一个 G2Plot 图形的配置。
  3. *plot.render(path, env, *kwargs) : 渲染出一个 HTML 文件,同时可以传入文件的路径,以及 jinja2 env 和 kwargs 参数。
  4. *plot.render_notebook(env, *kwargs) : 将图形渲染到 jupyter 的预览。

于是我们可以先导入Plot方法

from pyg2plot import Plot

我们要画散点图

scatter = Plot("Scatter")

下一步就是要获取数据和设置参数plot.set_options(),这里获取数据直接利用requset解析案例json,而参数让我在后面一一道来:

import requests

#请求地址
url = "https://gw.alipayobjects.com/os/bmw-prod/0b37279d-1674-42b4-b285-29683747ad9a.json"

#发送get请求
a = requests.get(url)

#获取返回的json数据,并赋值给data
data = a.json()

图片

成功获取解析好的对象集合数据。

下面是对着参数,一顿操作猛如虎:

scatter.set_options(
{
    'appendPadding': 30,
    'data': data,
    'xField': 'change in female rate',
    'yField': 'change in male rate',
    'sizeField': 'pop',
    'colorField': 'continent',
    'color': ['#ffd500', '#82cab2', '#193442', '#d18768','#7e827a'],
    'size': [4, 30],
    'shape': 'circle',
    'pointStyle':{'fillOpacity': 0.8,'stroke': '#bbb'},
    'xAxis':{'line':{'style':{'stroke': '#aaa'}},},
    'yAxis':{'line':{'style':{'stroke': '#aaa'}},},
    'quadrant':{
        'xBaseline': 0,
        'yBaseline': 0,
        'labels': [
        {'content': 'Male decrease,nfemale increase'},
        {'content': 'Female decrease,nmale increase'},
        {'content': 'Female & male decrease'},
        {'content': 'Female &n male increase'}, ],},
})

如果在Jupyter notebook中预览的话,则执行下方语句

scatter.render_notebook()

如果想渲染出完整的html的话,则执行下方语句

scatter.render("散点图.html")

看一下成果吧

图片

参数解析&完整代码

各位看官,这块可能比较无聊,可以直接划到文末或者点击收藏。

主要还是详解一下刚才scatter.set_options()里的参数,方便大家后续自己改造!

分成几个部分一点一点解释:

参数解释

'appendPadding': 30, #①
'data': data, #②
'xField': 'change in female rate', #③
'yField': 'change in male rate',

①图表在上右下左的间距,加不加这个参数具体看下图

图片

②设置图表数据源(其中data在前面已经赋值了),这里的数据源为对象集合,例如:[{ time: '1991',value: 20 }, { time: '1992',value: 20 }]。

xFieldyField这两个参数分别是横/纵向的坐标轴对应的字段。

参数解释

'sizeField': 'pop', #④
'colorField': 'continent', #⑤
'color': ['#ffd500', '#82cab2', '#193442', '#d18768','#7e827a'], #⑥
'size': [4, 30], #⑦
'shape': 'circle', #⑧

④指定散点大小对应的字段名,我们用的pop(人口)字段。

⑤指定散点颜色对应的字段名,我们用的continent(洲)字段。

图片

⑥设置散点的颜色,指定了系列色值。

⑦设置散点的大小,可以指定大小数组 [minSize, maxSize]

⑧设置点的形状,比如ciclesquare

参数解释

'pointStyle':{'fillOpacity': 0.8,'stroke': '#bbb'}, #⑨
'xAxis':{'line':{'style':{'stroke': '#aaa'}},}, #⑩
'yAxis':{'line':{'style':{'stroke': '#aaa'}},},

pointStyle是指折线样式,不过在散点图里,指的是散点的描边。另外fillOpacity是设置透明度,stroke是设置描边颜色。

图片

⑩这里只是设置了坐标轴线的颜色。

参数解释

'quadrant':{
    'xBaseline': 0,
    'yBaseline': 0,
    'labels': [
    {'content': 'Male decrease,nfemale increase'},
    {'content': 'Female decrease,nmale increase'},
    {'content': 'Female & male decrease'},
    {'content': 'Female &n male increase'}, ],},

quadrant是四象限组件,具体细分配置如下:

细分配置功能描述
xBaselinex 方向上的象限分割基准线,默认为 0
yBaseliney 方向上的象限分割基准线,默认为 0
labels象限文本配置

PyG2Plot的介绍文档还不完善,上文中的很多参数是摸索的,大家作为参考就好。

图片

PyG2Plot 原理其实非常简单,其中借鉴了 pyecharts 的实现,但是因为蚂蚁金服的 G2Plot 完全基于可视分析理论的配置式结构,所以封装上比 pyecharts 简洁非常非常多。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表德赢Vwin官网 网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据
    +关注

    关注

    8

    文章

    7002

    浏览量

    88937
  • 参数
    +关注

    关注

    11

    文章

    1829

    浏览量

    32194
  • 可视化
    +关注

    关注

    1

    文章

    1194

    浏览量

    20933
  • PyG2Plot
    +关注

    关注

    0

    文章

    2

    浏览量

    23
收藏 人收藏

    评论

    相关推荐

    可视化MES系统软件

    进行筛选、分析和控制,因此,利用可视化技术将其转化为图表、图像和表格等形式展示,便于管理者有效分析、控制和管理。(2可视化交互方面。车间的装配质量管理系统和过程控制管理系统交互性差,只能管理者单方面
    发表于 11-30 19:55

    如何把AD中非可视化区域物件移到可视化区域?

    AD中非可视化区域物件怎么移到可视化区域???
    发表于 09-10 05:36

    基于STM的可视化门禁系统

    基于STM的可视化门禁系统
    发表于 03-07 09:49

    基于stm的可视化门禁系统

    基于stm的可视化门禁系统
    发表于 03-11 09:23

    15玩转数据可视化的技巧

    高手总结的15技巧,让你轻松玩转数据可视化
    发表于 05-22 09:59

    Python数据可视化

    Python数据可视化:网易云音乐歌单
    发表于 07-19 08:30

    三维可视化的应用和优势

    。  如设备出现问题,可以更加直观的通过三维可视化运维系统发现,因为会在系统内出现数据异常,甚至可以通过设置相对的阈值来进行提醒,使得设备出现问题后能够第时间发现,减少维修时间和开支。提升设备的工作效率
    发表于 12-02 11:52

    常见的几种可视化介绍

    说说常见的几种可视化、信息可视化信息可视化就是对抽象数据进行直观视觉呈现的研究,抽象数据既包含数值数据,也包含非数值数据如文本信息、地图信息等,它们可通过利用图形图像处理、人机交互、
    发表于 07-12 07:49

    Keras可视化神经网络架构的4种方法

    解模型结构、激活函数、模型参数形状(神经元数量)等keras 中有些现成的包可以创建我们的神经网络模型的可视化表示。前三包可以在模型训练之前使用(只需要定义和编译模型);但是Tensor
    发表于 11-02 14:55

    经验分享|BI数据可视化报表布局——容器

    设置。2、放大容器点击右侧的【专有】,将看到【允许放大容器】的开关。这是什么功能?关闭该开关,表示可以放大容器以及容器内的图表;开启
    发表于 03-15 17:10

    keras可视化介绍

    (LR), 纵向显示(TB) expand_nested=False,# 是否将嵌套模型扩展到聚类中 dpi=96 )4 训练历史可视化 Keras Model 上的 fit() 方法返回
    发表于 08-18 07:53

    Pyecharts制作可视化大屏详解

    前两天发了篇《用Python制作可视化大屏,特简单!》,留言区非常火爆,发现大家都对可视化部分非常感兴趣。 而恰好大屏
    的头像 发表于 10-26 09:42 3540次阅读
    Pyecharts制作<b class='flag-5'>可视化</b>大屏详解

    使用Python来收集、处理和可视化人口数据

    数据分析和可视化: pandas:提供高性能、易用的数据结构和数据分析工具的。 requests:
    的头像 发表于 06-21 17:08 1376次阅读
    使用Python来收集、处理和<b class='flag-5'>可视化</b>人口数据

    分享10适用于多个学科的Python数据可视化

    matplotlib 是Python可视化程序的泰斗。经过十几年它任然是Python使用者最常用的画图库。它的设计和在1980年代被设计的商业程序语言MATLAB非常接近。
    的头像 发表于 08-14 10:40 798次阅读
    分享10<b class='flag-5'>个</b>适用于多个学科的Python数据<b class='flag-5'>可视化</b><b class='flag-5'>库</b>

    Altair:漂亮易用的数据可视化

    Altair 是基于Jupyter Notebook的强大可视化。它提供了强大而简洁的可视化语法,使我们能够快速构建各种统计
    的头像 发表于 10-21 10:43 914次阅读
    Altair:<b class='flag-5'>一</b><b class='flag-5'>个</b>漂亮易用的数据<b class='flag-5'>可视化</b><b class='flag-5'>库</b>