当前位置: 首页 > 科技观察

吊打Pyecharts,这个新的Python绘图库太美了!

时间:2023-03-20 16:09:38 科技观察

人生苦短,赶快学好Python吧!最近看了一篇文章《一个牛逼的Python 可视化库:PyG2Plot》,可惜只是简单的介绍,官方也只有一个简单的例子。经过小吴的一番测试,成功复现了其中一张样图,而且还是很精致的。今天就把整个过程分享给大家,看看新图书馆的图纸能有多美!Python可视化菜鸟这个Python可视化菜鸟在GitHub上介绍如下:PyG2Plot是@AntV/G2Plot在Python3上的封装。G2Plot是一个基于图形语法理论构建的简单易用的统计图表库,具有一定的扩展性和组合能力。但是,要研究PyG2Plot,首先要从G2说起,G2是蚂蚁金服开源的一款基于图形化语法,面向数据分析的统计图表引擎。后来在它的基础上,封装了一个业务中常用的统计图表库——G2Plot。但是现在python这么火,几乎nb的每一个前端可视化库最终都会用python开发生成对应的html库!它也不例外,封装了Python可视化库——PyG2Plot。在GitHub上,还提供了示例图。我对右下角的散点图更感兴趣。于是,我就兴致勃勃地去看了例子。这是一场买卖双方的秀!我不在乎,我要右边的那个人自己来做。吃饱穿暖还需要自己动手。然后先安装PyG2Plot库。pipinstallpyg2plot目前,pyg2plot只提供了一个简单的API,并且只列出了需要的参数。:获取Plot对应的类实例。plot.set_options(options:object):为图表实例设置一个G2Plot图形配置。plot.render(path,env,**kwargs):渲染一个HTML文件,可以传入文件的路径,以及jinja2的env和kwargs参数。plot.render_notebook(env,**kwargs):将图形渲染到jupyter的预览。所以我们可以先从pyg2plotimportPlot中导入Plot方法我们想画一个散点图scatter=Plot("Scatter")接下来就是获取数据并设置参数plot.set_options(),这里获取数据直接使用requset解析casejson,参数let我后面一一来:importrequests#requestaddressurl="https://gw.alipayobjects.com/os/bmw-prod/0b37279d-1674-42b4-b285-29683747ad9a.json"#sendgetrequesta=requests.get(url)#获取返回的json数据赋值给datadata=a.json()即可成功获取解析对象集合数据。下面是对参数的激烈操作:scatter.set_options({'appendPadding':30,'data':data,'xField':'changeinfemalerate','yField':'changeinmalerate','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':'Maledecrease,\nfemaleincrease'},{'content':'Femaledecrease,\nmaleincrease'},{'content':'Female&maledecrease'},{'content':'Female&\nmaleincrease'},],},})如果在Jupyternotebook中预览,执行下面语句scatter.render_notebook()如果要渲染完整的html,执行下面语句scatter.render("scatterFigure.html")我们来看看结果。参数解析&完整代码各位读者,本文可能比较枯燥,可以直接拉到文末或点击保存。主要就是把刚才scatter.set_options()中的参数详细解释一下,方便大家以后修改!分成几个部分一点一点来解释:参数解释一个'appendPadding':30,#①'data':data,#②'xField':'changeinfemalerate',#③'yField':'changeinmalerate',①图表是intop,right,bottom,left之间的间距,是否加这个参数,见下图②设置图表的数据源(数据之前已经赋值),这里的数据源是一个集合对象,例如:[{time:'1991',value:20},{time:'1992',value:20}]。③xField和yField这两个参数分别是横/纵坐标轴对应的字段。参数说明二'sizeField':'pop',#④'colorField':'continent',#⑤'color':['#ffd500','#82cab2','#193442','#d18768','#7e827a'],#⑥'size':[4,30],#⑦'shape':'circle',#⑧④指定散点大小对应的字段名,我们使用pop(人口)字段。⑤指定散点颜色对应的字段名,我们使用continent(大陆)字段。⑥设置散点颜色,指定系列颜色值。⑦设置散点的大小,可以指定大小数组[minSize,maxSize]⑧设置点的形状,如cicle,square参数说明三'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':'Maledecrease,\nfemaleincrease'},{'content':'Femaledecrease,\nmaleincrease'},{'content':'Female&maledecrease'},{'content':'Female&\nmaleincrease'},],},quadrant为四象限组件,具体细分配置如下:细分配置函数描述了quadrant在xBaselinex方向上的分割基线,默认为0yBaseline在y方向上的象限分割基线,默认为0labelsQuadrant文本配置PyG2Plot的介绍文档并不完善,上面的很多参数都是自己摸索的,直接拿来当一个参考。PyG2Plot的原理其实很简单,借鉴了pyecharts的实现,但是由于蚂蚁金服的G2Plot完全基于可视化分析理论的组态结构,所以封装起来比pyecharts要简单的多。完整代码如果有人对本文的代码感兴趣,请在后台回复数字“101”,即可获得全部代码!