吊打 Pyecharts,这个新 Python 绘图库竟然这么漂亮!(一)

大家好,我是Sitin涛哥!

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

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


Python可视化新秀

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

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

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

吊打 Pyecharts,这个新 Python 绘图库竟然这么漂亮!(一)

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

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

吊打 Pyecharts,这个新 Python 绘图库竟然这么漂亮!(一)

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

吊打 Pyecharts,这个新 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()

吊打 Pyecharts,这个新 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")

看一下成果吧

吊打 Pyecharts,这个新 Python 绘图库竟然这么漂亮!(一)

上一篇:阿里云高校活动第三日:SLB负载均衡实践


下一篇:Pandas进阶大神!从0到100你只差这篇文章!(三)