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

Aidan075 等级 1080 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转为Go,是不是代表Go比Python好?
众所周知,知乎早在几年前就将推荐系统从 Python 转为了 Go。于是乎,一部分人就说 Go 比 Python 好,Go 和 Python 两大社区的相关开发人员为此也争论过不少,似乎,谁也没完全说服谁。 知乎从Python转为Go,是不是代表Go比Python好?我认为,各有优点,谁也取代不了谁,会长期共存! “由 Python 语言转向 Go 语言
如何用python进行数据分析——00环境配置
↑一个宝藏公众号,长的好看的人都关注了  简单介绍一下Python吧 Python是一种面向对象程序设计语言,由荷兰人吉多·范罗苏姆于1989年底发明。目前是最常用也是最热门的一门编程语言之一,应用非常广泛。 (不是这个面对对象) 为什么选择python呢? 有人说python是万能的,除了生孩子不会,什么都会。 有人说python是未来
零基础应该如何开始学习python
随着人工智能时代的到来,Python也在不断发展壮大,越来越多的人选择学Python,只要因为它容易学习,功能又强大还可以跨平台。其实Python作为一门脚本语言,难度上相较于其他语言略微简单点,但是对于没有计算机基础的人来说,也是非常难得,可能安装这一步就会难倒大家!1、Python学习确定方向对于刚入门的人来说,要先把Python基础和进阶学透,再继续往
全网最全python学习路线图,让学习不迷路
学习Python有一段时间了,最近也是在不断的整理Python相关的基础知识和学习一些新的知识,想来分享给大家。我刚开始接触Python时,和大多数初学者一样不知道从那里开始学习python,我也在网上找了许多python相关的资料来学习,但是资料多也不见得就好,因为不知道从哪里开始下手,走了许多弯路。后面我就整理了一套对初学者来说学习python能很快上手
玩转python爬虫
     近几年来,python的热度一直特别火!大学期间,也进行了一番深入学习,毕业后也曾试图把python作为自己的职业方向,虽然没有如愿成为一名python工程师,但掌握了python,也让我现如今的工作开展和职业发展更加得心应手。这篇文章主要与大家分享一下自己在python爬虫方面的收获与见解。   
手把手教你使用Flask搭建ES搜索引擎(预备篇)
/1 前言/ Elasticsearch 是一个开源的搜索引擎,建立在一个全文搜索引擎库 Apache Lucene™ 基础之上。 那么如何实现 Elasticsearch和 Python 的对接成为我们所关心的问题了 (怎么什么都要和 Python 关联啊)。 /2 Python 交互/ 所以,Python 也就提供了可以对接 Elasti
CentOS升级Python到2.7版本
查看python的版本 python -V Python 2.4.3 1.先安装GCC yum -y install gcc 2.下载Python-2.7.2 wget http://python.org/ftp/python/2.7.2/Python-2.7.2.tar.bz2 3.解压Python-2.7.2
Flask教程(十五)日志
### 软硬件环境 * windows 10 64bit * anaconda3 with python 3.7 * pycharm 2020.1.2 * flask 1.1.2 ### 简介 `flask`日志使用标准的`python``logging`。所有与`flask`相关的消息都用`ap
Python import与from import使用及区别介绍
Python程序可以调用一组基本的函数(即内建函数),比如print()、input()和len()等函数。接下来通过本文给大家介绍Python import与from import使用及区别介绍,感兴趣的朋友一起看看吧 下面介绍下Python import与from import使用,具体内容如下所示: Python程序可以调用一组基本的函数(即内建函
Python 和 JS 有什么相似?
Python 是一门运用很广泛的语言,自动化脚本、爬虫,甚至在深度学习领域也都有 Python 的身影。作为一名前端开发者,也了解 ES6 中的很多特性借鉴自 Python (比如默认参数、解构赋值、Decorator等),同时本文会对 Python 的一些用法与 JS 进行类比。不管是提升自己的知识广度,还是更好地迎接 AI 时代,Python 都是一门值
Python 画图
使用python的科学计算库,达到快速计算的效果。 标准的Python中用列表(list)保存一组值,可以当作数组使用。但由于列表的元素可以是任何对象,因此列表中保存的是对象的指针。这样一来,为了保存一个简单的列表\[1,2,3\],就需 要有三个指针和三个整数对象。对于数值运算来说,这种结构显然比较浪费内存和 CPU 计算时间。 使用numpy的a
Python服务器开发一:python基础
Python(蟒蛇)是一种动态解释型的编程语言。Python可以在Windows、UNIX、MAC等多种操作系统上使用,也可以在Java、.NET开发平台上使用。 【特点】 1 Python使用C语言开发,但是Python不再有C语言中的指针等复杂的数据类型。 2 Python具有很强的面向对象特性,而且简化了面向对象的实现。它消除了保护类型、抽象类、
Python环境搭建—安利Python小白的Python和Pycharm安装详细教程
人生苦短,我用Python。众所周知,Python目前越来越火,学习Python的小伙伴也越来越多。最近看到群里的小伙伴经常碰到不会安装Python或者不知道去哪下载Python安装包等系列问题,为了方便大家学习Python,小编整理了一套Python和Pycharm安装详细教程,只要大家按照这个步骤来,就可以轻松的搞定Python和Pycharm的安装了。
Python进阶丨如何创建你的第一个Python元类?
> **摘要:**通过本文,将深入讨论Python元类,其属性,如何以及何时在Python中使用元类。 Python元类设置类的行为和规则。元类有助于修改类的实例,并且相当复杂,是Python编程的高级功能之一。通过本文,将深入讨论Python元类,其属性,如何以及何时在Python中使用元类。本文介绍以下概念: * * 什么是Python元类?
Tensorflow开篇:环境安装1—Anaconda3
​Anaconda是一个Python科学计算环境,提供了很多常用的Python库,例如:  numpy,scipy, matplotlib等等。自带的包管理器conda也很强大,可以方便地安装各种Python库。 Anaconda3-4.1.1-Windows-x86_64.exe --python2.7 Ana