1. 螞蟻開(kāi)源,又一超棒的 Python 開(kāi)源可視化庫(kù)

        共 4889字,需瀏覽 10分鐘

         ·

        2022-07-08 22:54


        給大家推薦的這個(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
        1. Plot(plot_type: str): 獲取 Plot 對(duì)應(yīng)的類實(shí)例。
        2. plot.set_options(options: object): 給圖表實(shí)例設(shè)置一個(gè) G2Plot 圖形的配置。
        3. plot.render(path, env, **kwargs): 渲染出一個(gè) HTML 文件,同時(shí)可以傳入文件的路徑,以及 jinja2 env 和 kwargs 參數(shù)。
        4. 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ù)讓我在后面一一道來(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': [430],
            '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 }]。

        xFieldyField這兩個(gè)參數(shù)分別是橫/縱向的坐標(biāo)軸對(duì)應(yīng)的字段。

        參數(shù)解釋

        'sizeField''pop'#④
        'colorField''continent'#⑤
        'color': ['#ffd500''#82cab2''#193442''#d18768','#7e827a'], #⑥
        'size': [430], #⑦
        '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)的形狀,比如ciclesquare

        參數(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ì)分配置功能描述
        xBaselinex 方向上的象限分割基準(zhǔn)線,默認(rèn)為 0
        yBaseliney 方向上的象限分割基準(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)潔非常非常多。

        我們的文章到此就結(jié)束啦,如果你喜歡今天的Python 實(shí)戰(zhàn)教程,請(qǐng)持續(xù)關(guān)注Python實(shí)用寶典。

        有任何問(wèn)題,可以在公眾號(hào)后臺(tái)回復(fù):加群,回答相應(yīng)紅字驗(yàn)證信息,進(jìn)入互助群詢問(wèn)。

        原創(chuàng)不易,希望你能在下面點(diǎn)個(gè)贊和在看支持我繼續(xù)創(chuàng)作,謝謝!


        END


        推薦閱讀


        牛逼!Python常用數(shù)據(jù)類型的基本操作(長(zhǎng)文系列第①篇)

        牛逼!Python的判斷、循環(huán)和各種表達(dá)式(長(zhǎng)文系列第②篇)

        牛逼!Python函數(shù)和文件操作(長(zhǎng)文系列第③篇)

        牛逼!Python錯(cuò)誤、異常和模塊(長(zhǎng)文系列第④篇)


        吳恩達(dá)deeplearining.ai的經(jīng)典總結(jié)資料


        Ps:從小程序直接獲取下載

        瀏覽 39
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
          
          

            1. 亚洲成人中文网 | 最新中文字幕第一页 | 日本色网络| 熟女操逼网 | 欧美日韩成人电影 |