給大家推薦的這個(gè)開(kāi)源項(xiàng)目是一個(gè)非常棒的可視化庫(kù) -- PyG2Plot 。
PyG2Plot 可視化
這個(gè)Python可視化新秀,在GitHub上是這樣介紹的:
PyG2Plot 是@AntV/G2Plot 在 Python3 上的封裝。G2Plot 是一套簡(jiǎn)單、易用、并具備一定擴(kuò)展能力和組合能力的統(tǒng)計(jì)圖表庫(kù),基于圖形語(yǔ)法理論搭建而成。
不過(guò)研究PyG2Plot還得先從G2開(kāi)始講,它是螞蟻金服開(kāi)源一個(gè)基于圖形語(yǔ)法,面向數(shù)據(jù)分析的統(tǒng)計(jì)圖表引擎。后來(lái)又在其基礎(chǔ)上,封裝出業(yè)務(wù)上常用的統(tǒng)計(jì)圖表庫(kù)——G2Plot。

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

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

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

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

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

②設(shè)置圖表數(shù)據(jù)源(其中data在前面已經(jīng)賦值了),這里的數(shù)據(jù)源為對(duì)象集合,例如:[{ time: '1991',value: 20 }, { time: '1992',value: 20 }]。
③xField和yField這兩個(gè)參數(shù)分別是橫/縱向的坐標(biāo)軸對(duì)應(yīng)的字段。
參數(shù)解釋
'sizeField': 'pop', #④
'colorField': 'continent', #⑤
'color': ['#ffd500', '#82cab2', '#193442', '#d18768','#7e827a'], #⑥
'size': [4, 30], #⑦
'shape': 'circle', #⑧
④指定散點(diǎn)大小對(duì)應(yīng)的字段名,我們用的pop(人口)字段。
⑤指定散點(diǎn)顏色對(duì)應(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是指折線樣式,不過(guò)在散點(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í)非常簡(jiǎn)單,其中借鑒了 pyecharts 的實(shí)現(xiàn),但是因?yàn)槲浵伣鸱?G2Plot 完全基于可視分析理論的配置式結(jié)構(gòu),所以封裝上比 pyecharts 簡(jiǎn)潔非常非常多。
-
數(shù)據(jù)
+關(guān)注
關(guān)注
8文章
7298瀏覽量
93535 -
參數(shù)
+關(guān)注
關(guān)注
11文章
1868瀏覽量
33635 -
可視化
+關(guān)注
關(guān)注
1文章
1288瀏覽量
22464 -
PyG2Plot
+關(guān)注
關(guān)注
0文章
2瀏覽量
37
發(fā)布評(píng)論請(qǐng)先 登錄
可視化MES系統(tǒng)軟件
15個(gè)玩轉(zhuǎn)數(shù)據(jù)可視化的技巧
三維可視化的應(yīng)用和優(yōu)勢(shì)
常見(jiàn)的幾種可視化介紹
Keras可視化神經(jīng)網(wǎng)絡(luò)架構(gòu)的4種方法
經(jīng)驗(yàn)分享|BI數(shù)據(jù)可視化報(bào)表布局——容器
keras可視化介紹
Pyecharts制作可視化大屏詳解
使用Python來(lái)收集、處理和可視化人口數(shù)據(jù)
分享10個(gè)適用于多個(gè)學(xué)科的Python數(shù)據(jù)可視化庫(kù)
Altair:一個(gè)漂亮易用的數(shù)據(jù)可視化庫(kù)

一個(gè)非常棒的可視化庫(kù):PyG2Plot
評(píng)論