原来Python绘图也可以这么漂亮,这次真的是学习到了!

Aidan075 等级 687 0 0
标签: pythonplotPython

原来Python绘图也可以这么漂亮,这次真的是学习到了!

作者:朱小五

来源:快学Python

👆人生苦短,快学Python!

最近看了一篇文章《一个牛逼的Python 可视化库:PyG2Plot》,可惜只是简单介绍,并且只有一个简陋的官方示例。

经过小五一番测试成功复现了其中一个示例图片,还很精致。今天正好把完整过程分享给大家,看看这个新库绘图也可以这么漂亮!

Python可视化新秀

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

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

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

原来Python绘图也可以这么漂亮,这次真的是学习到了!

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

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

原来Python绘图也可以这么漂亮,这次真的是学习到了!

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

原来Python绘图也可以这么漂亮,这次真的是学习到了!

我不管,我就要右边那个👉

自己动手,丰衣足食

看来还是需要自己动手,那就先安装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()  

原来Python绘图也可以这么漂亮,这次真的是学习到了!

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

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

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")  

看一下成果吧

原来Python绘图也可以这么漂亮,这次真的是学习到了!

参数解析&完整代码

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

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

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

参数解释 一

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

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

原来Python绘图也可以这么漂亮,这次真的是学习到了!

② 设置图表数据源(其中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(洲)字段。

原来Python绘图也可以这么漂亮,这次真的是学习到了!

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

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

⑧ 设置点的形状,比如ciclesquare

参数解释 三

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

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

原来Python绘图也可以这么漂亮,这次真的是学习到了!

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

参数解释 四

'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是四象限组件,具体细分配置如下:

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

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

原来Python绘图也可以这么漂亮,这次真的是学习到了!

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

完整代码

如果有小伙伴对本文代码感兴趣,扫码👇关注「快学Python」后台回复“PyG2Plot” ,建议直接复制,即可获取全部代码!

本文转转自微信公众号凹凸数据原创[https://mp.weixin.qq.com/s/0vE4i0QyzYhV-bcagyHVEw(https://mp.weixin.qq.com/s/0vE4i0QyzYhV-bcagyHVEw),可扫描二维码进行关注: 原来Python绘图也可以这么漂亮,这次真的是学习到了! 如有侵权,请联系删除。

收藏
评论区

相关推荐

Python的环境搭建和下载
Python是一个跨平台、可移植的编程语言,因此可在windows、Linux和Mac OS X系统中安装使用。 安装完成后,你会得到Python解释器环境,可以通过终端输入python命令查看本地是否已经按照python以及python版本。这里有一点需要注意的是,如果没有将python的安装目录添加到环境变量中,会报错(python不是内部命令或外部命
原来Python绘图也可以这么漂亮,这次真的是学习到了!
(https://imghelloworld.osscnbeijing.aliyuncs.com/8830803f033eeed85783e9058cf08968.png) 作者:朱小五 来源:快学Python 👆人生苦短,快学Python! 最近看了一篇文章《一个牛逼的Python 可视化库:PyG2Plot》,可惜只是简单介
知乎从Python转为Go,是不是代表Go比Python好?
众所周知,知乎早在几年前就将推荐系统从 Python 转为了 Go。于是乎,一部分人就说 Go 比 Python 好,Go 和 Python 两大社区的相关开发人员为此也争论过不少,似乎,谁也没完全说服谁。 知乎从Python转为Go,是不是代表Go比Python好?我认为,各有优点,谁也取代不了谁,会长期共存! “由 Python 语言转向 Go 语言
Python编程基础(快速入门必看
Python编程基础一、Python语言基本语法 Python是一
Jupyter Notebook最强指南,没有之一
(文末有福利) Python语言是一种强大而简洁的编程语言。据IEEE Spectrum消息,Python在2020年继续蝉联最受欢迎的编程语言第一名。对于刚接触Python的新手来说,配置一个容易上手又适合自己的开发环境无疑是成功掌握这门编程语言的第一步。对于Python IDE的比较和推荐,各路高手也说法不同,其中被推荐频率最高的当属Pycharm、V
如何用python进行数据分析——00环境配置
↑一个宝藏公众号,长的好看的人都关注了  简单介绍一下Python吧 Python是一种面向对象程序设计语言,由荷兰人吉多·范罗苏姆于1989年底发明。目前是最常用也是最热门的一门编程语言之一,应用非常广泛。 (不是这个面对对象) 为什么选择python呢? 有人说python是万能的,除了生孩子不会,什么都会。 有人说python是未来
python文件的第一行 #!/usr/bin/python3 是什么意思?
python文件的第一行代码通常在脚本语言的第一行会看到: !/usr/bin/env python或 !/usr/bin/python 首先要确定的一点是它不是注释。这两句话的目的都是指出你的python文件用什么可执行程序去运行它。1. !/usr/bin/python 是告诉操作系统执行这个脚本的时候,调用 /usr/bin 下的 python 解释
零基础应该如何开始学习python
随着人工智能时代的到来,Python也在不断发展壮大,越来越多的人选择学Python,只要因为它容易学习,功能又强大还可以跨平台。其实Python作为一门脚本语言,难度上相较于其他语言略微简单点,但是对于没有计算机基础的人来说,也是非常难得,可能安装这一步就会难倒大家!1、Python学习确定方向对于刚入门的人来说,要先把Python基础和进阶学透,再继续往
怎么学python,学习python的正确姿势
Python是一门相对来说比较简单的编程语言,自学是非常轻松的。首先得明白python有哪些发展方向 需要了解这个这门语言 而不是听说 这个高薪资 容易学习最好的学习状态就是出于兴趣 兴趣是最好的老师 当然对钱感兴趣也是可以的。一、人工智能二、大数据三、网络爬虫工程师四、Python web全栈工程师五、Python自动化运维六、Python自动化测试再来说
关于学习python的一点意见分享
Python适合初学者入门。Python作为一门叫做ABC语言的替代品。 Python提供了高效的高级数据结构,还能简单有效地面向对象编程。相比其他主流语言,有更好的可读性,上手相对容易。各种模块,免去了很多重复的工作,更快地写出东西。配置环境也不复杂,mac和linux内置了Python。自学python,最大的3个经验:.一本易懂,比较好的教程,从头到尾
全网最全python学习路线图,让学习不迷路
学习Python有一段时间了,最近也是在不断的整理Python相关的基础知识和学习一些新的知识,想来分享给大家。我刚开始接触Python时,和大多数初学者一样不知道从那里开始学习python,我也在网上找了许多python相关的资料来学习,但是资料多也不见得就好,因为不知道从哪里开始下手,走了许多弯路。后面我就整理了一套对初学者来说学习python能很快上手
玩转python爬虫
     近几年来,python的热度一直特别火!大学期间,也进行了一番深入学习,毕业后也曾试图把python作为自己的职业方向,虽然没有如愿成为一名python工程师,但掌握了python,也让我现如今的工作开展和职业发展更加得心应手。这篇文章主要与大家分享一下自己在python爬虫方面的收获与见解。   
python的这些必备干货知识点,快来看看有没有你不了解的?
Python是当前主流的编程语言之一,其优点有:一:语法简洁,可以让使用者用少量的代码完成相对复杂的效果。二:标准库和第三库多,功能强大;三:站在了人工智能和大数据的风口上;像国内的豆瓣呀,知乎呀等等知名网站都是基于python开发的,而Youtube、Reddit、Dropbpx也是用python的框架开发的。近几年学习python的小伙伴越来越多,那么p
你写的Python代码规范吗?
总第141篇/张俊红1.什么是PEP8PEP 是 Python Enhancement Proposals 的缩写,直译过来就是「Python增强建议书」也可叫做「Python改进建议书」,说的直白点就是Python相关的一些文档,主要用来传递某些信息,这些信息包括某个通知亦或是某个新的规范。关于更深层次的概念,大家有兴趣的可以自行去了解。PEP 后面的数字
手把手教你使用Flask搭建ES搜索引擎(预备篇)
/1 前言/ Elasticsearch 是一个开源的搜索引擎,建立在一个全文搜索引擎库 Apache Lucene™ 基础之上。 那么如何实现 Elasticsearch和 Python 的对接成为我们所关心的问题了 (怎么什么都要和 Python 关联啊)。 /2 Python 交互/ 所以,Python 也就提供了可以对接 Elasti