<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          吊打Pyecharts,又一個(gè)Python繪圖庫!

          共 3812字,需瀏覽 8分鐘

           ·

          2022-05-27 17:30

          導(dǎo)讀:最近看了一篇Python 可視化庫PyG2Plot的文章,可惜只是簡(jiǎn)單介紹,并且只有一個(gè)簡(jiǎn)陋的官方示例。


          經(jīng)過一番測(cè)試成功復(fù)現(xiàn)了其中一個(gè)示例圖片,還很精致。今天正好把完整過程分享給大家,看看這個(gè)新庫繪圖也可以這么漂亮!

          作者:朱小五
          來源:快學(xué)Python(ID:kxpython)




          01 Python可視化新秀

          這個(gè)Python可視化新秀,在GitHub上是這樣介紹的:

          ?? PyG2Plot 是@AntV/G2Plot 在 Python3 上的封裝。G2Plot 是一套簡(jiǎn)單、易用、并具備一定擴(kuò)展能力和組合能力的統(tǒng)計(jì)圖表庫,基于圖形語法理論搭建而成。

          不過研究PyG2PlotPyG2Plot還得先從G2開始講,它是螞蟻金服開源一個(gè)基于圖形語法,面向數(shù)據(jù)分析的統(tǒng)計(jì)圖表引擎。后來又在其基礎(chǔ)上,封裝出業(yè)務(wù)上常用的統(tǒng)計(jì)圖表庫——G2Plot。
          不過現(xiàn)在Python這么熱,幾乎每一個(gè)nb的前端可視化庫,最終都會(huì)被用python開發(fā)一套生成相應(yīng)html的庫!它也不例外,封裝出了Python可視化庫——PyG2Plot

          在GitHub上,也提供了一張示例圖,我對(duì)右下角的散點(diǎn)圖比較感興趣。


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


          我不管,我就要右邊那個(gè)??


          02 自己動(dòng)手,豐衣足食

          看來還是需要自己動(dòng)手,那就先安裝PyG2Plot庫吧。

          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ù)讓我在后面一一道來:

          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í)行下方語句。

          scatter.render_notebook()

          如果想渲染出完整的html的話,則執(zhí)行下方語句。

          scatter.render("散點(diǎn)圖.html")

          看一下成果吧。



          03 參數(shù)解析

          各位看官,這塊可能比較無聊,可以直接劃到文末或者點(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':?[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是指折線樣式,不過在散點(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)潔非常非常多。


          延伸閱讀??

          延伸閱讀《利用Python進(jìn)行數(shù)據(jù)分析》

          干貨直達(dá)??


          更多精彩??

          在公眾號(hào)對(duì)話框輸入以下關(guān)鍵詞
          查看更多優(yōu)質(zhì)內(nèi)容!

          讀書?|?書單?|?干貨?|?講明白?|?神操作?|?手把手
          大數(shù)據(jù)?|?云計(jì)算?|?數(shù)據(jù)庫?|?Python?|?爬蟲?|?可視化
          AI?|?人工智能?|?機(jī)器學(xué)習(xí)?|?深度學(xué)習(xí)?|?NLP
          5G?|?中臺(tái)?|?用戶畫像?|?數(shù)學(xué)?|?算法?|?數(shù)字孿生

          據(jù)統(tǒng)計(jì),99%的大咖都關(guān)注了這個(gè)公眾號(hào)
          ??
          瀏覽 24
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

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

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  人妻夜夜添夜夜无码精品 | 青青草精品 | 麻豆久久一区二区三区 | 欧美日韩亚洲一区二区三区 | 日韩免费视频在线 |