吊打Pyecharts,又一個Python繪圖庫!
↑?關(guān)注 + 星標(biāo)?,每天學(xué)Python新技能
后臺回復(fù)【大禮包】送你Python自學(xué)大禮包
人生苦短,快學(xué)Python!
最近看了一篇文章《吊打Pyecharts,又一超級棒的開源可視化庫!》,可惜只是簡單介紹。于是乎我再把去年寫過的文章發(fā)一遍吧,正好很多新讀者應(yīng)該都沒看過??
我去年成功復(fù)現(xiàn)了其中一個示例圖片,還很精致。今天正好把完整過程分享給大家,看看這個新庫繪圖也可以這么漂亮!
Python可視化新秀
這個Python可視化新秀,在GitHub上是這樣介紹的:
?? PyG2Plot 是
@AntV/G2Plot在 Python3 上的封裝。G2Plot 是一套簡單、易用、并具備一定擴(kuò)展能力和組合能力的統(tǒng)計圖表庫,基于圖形語法理論搭建而成。
不過研究PyG2Plot還得先從G2開始講,它是螞蟻金服開源一個基于圖形語法,面向數(shù)據(jù)分析的統(tǒng)計圖表引擎。后來又在其基礎(chǔ)上,封裝出業(yè)務(wù)上常用的統(tǒng)計圖表庫——G2Plot。

不過現(xiàn)在Python這么熱,幾乎每一個nb的前端可視化庫,最終都會被用python開發(fā)一套生成相應(yīng)html的庫!它也不例外,封裝出了Python可視化庫——PyG2Plot。
在GitHub上,也提供了一張示例圖,我對右下角的散點(diǎn)圖比較感興趣。

結(jié)果興致勃勃地去看示例,這簡直買家秀與賣家秀啊!

我不管,我就要右邊那個??
自己動手,豐衣足食
看來還是需要自己動手,那就先安裝PyG2Plot庫吧
pip?install?pyg2plot
目前目前 pyg2plot 只提供簡單的一個 API,只列出需要的參數(shù)
Plot
Plot(plot_type: str): 獲取 Plot對應(yīng)的類實(shí)例。plot.set_options(options: object): 給圖表實(shí)例設(shè)置一個 G2Plot 圖形的配置。 plot.render(path, env, **kwargs): 渲染出一個 HTML 文件,同時可以傳入文件的路徑,以及 jinja2 env 和 kwargs 參數(shù)。 plot.render_notebook(env, **kwargs): 將圖形渲染到 jupyter 的預(yù)覽。
于是我們可以先導(dǎo)入Plot方法
from?pyg2plot?import?Plot
我們要畫散點(diǎn)圖
scatter?=?Plot("Scatter")
下一步就是要獲取數(shù)據(jù)和設(shè)置參數(shù)plot.set_options(),這里獲取數(shù)據(jù)直接利用requset解析案例json,而參數(shù)讓我在后面一一道來:
import?requests
#請求地址
url?=?"https://gw.alipayobjects.com/os/bmw-prod/0b37279d-1674-42b4-b285-29683747ad9a.json"
#發(fā)送get請求
a?=?requests.get(url)
#獲取返回的json數(shù)據(jù),并賦值給data
data?=?a.json()

成功獲取解析好的對象集合數(shù)據(jù)。
下面是對著參數(shù),一頓操作猛如虎:
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中預(yù)覽的話,則執(zhí)行下方語句
scatter.render_notebook()
如果想渲染出完整的html的話,則執(zhí)行下方語句
scatter.render("散點(diǎn)圖.html")
看一下成果吧

參數(shù)解析&完整代碼
各位看官,這塊可能比較無聊,可以直接劃到文末或者點(diǎn)擊收藏。
主要還是詳解一下剛才scatter.set_options()里的參數(shù),方便大家后續(xù)自己改造!
分成幾個部分一點(diǎn)一點(diǎn)解釋:
參數(shù)解釋 一
'appendPadding':?30,?#①
'data':?data,?#②
'xField':?'change?in?female?rate',?#③
'yField':?'change?in?male?rate',?
① 圖表在上右下左的間距,加不加這個參數(shù)具體看下圖

② 設(shè)置圖表數(shù)據(jù)源(其中data在前面已經(jīng)賦值了),這里的數(shù)據(jù)源為對象集合,例如:[{ time: '1991',value: 20 }, { time: '1992',value: 20 }]。
③ xField和yField這兩個參數(shù)分別是橫/縱向的坐標(biāo)軸對應(yīng)的字段。
參數(shù)解釋 二
'sizeField':?'pop',?#④
'colorField':?'continent',?#⑤
'color':?['#ffd500',?'#82cab2',?'#193442',?'#d18768','#7e827a'],?#⑥
'size':?[4,?30],?#⑦
'shape':?'circle',?#⑧
④ 指定散點(diǎn)大小對應(yīng)的字段名,我們用的pop(人口)字段。
⑤ 指定散點(diǎn)顏色對應(yīng)的字段名,我們用的continent(洲)字段。

⑥ 設(shè)置散點(diǎn)的顏色,指定了系列色值。
⑦ 設(shè)置散點(diǎn)的大小,可以指定大小數(shù)組 [minSize, maxSize]
⑧ 設(shè)置點(diǎn)的形狀,比如cicle、square
參數(shù)解釋 三
'pointStyle':{'fillOpacity':?0.8,'stroke':?'#bbb'},?#⑨
'xAxis':{'line':{'style':{'stroke':?'#aaa'}},},?#⑩
'yAxis':{'line':{'style':{'stroke':?'#aaa'}},},
⑨ pointStyle是指折線樣式,不過在散點(diǎn)圖里,指的是散點(diǎn)的描邊。另外fillOpacity是設(shè)置透明度,stroke是設(shè)置描邊顏色。

⑩ 這里只是設(shè)置了坐標(biāo)軸線的顏色。
參數(shù)解釋 四
'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是四象限組件,具體細(xì)分配置如下:
| 細(xì)分配置 | 功能描述 |
|---|---|
| xBaseline | x 方向上的象限分割基準(zhǔn)線,默認(rèn)為 0 |
| yBaseline | y 方向上的象限分割基準(zhǔn)線,默認(rèn)為 0 |
| labels | 象限文本配置 |
PyG2Plot的介紹文檔還不完善,上文中的很多參數(shù)是摸索的,大家作為參考就好。

PyG2Plot 原理其實(shí)非常簡單,其中借鑒了 pyecharts 的實(shí)現(xiàn),但是因為螞蟻金服的 G2Plot 完全基于可視分析理論的配置式結(jié)構(gòu),所以封裝上比 pyecharts 簡潔非常非常多。

