日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

用python画皇冠_手把手教你用 Python 绘制酷炫的桑基图!

發(fā)布時(shí)間:2023/12/2 python 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用python画皇冠_手把手教你用 Python 绘制酷炫的桑基图! 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

原標(biāo)題:手把手教你用 Python 繪制酷炫的桑基圖!

作者 | 周志鵬

責(zé)編 | 郭 芮

最近,不止一次收到小伙伴的截圖追問:

“這個(gè)圖叫什么???”

“這個(gè)圖真好看!!!怎么畫啊?”

......

筆者本沒有干貨,問的人多了,也便有了干貨。

此圖姓桑名基,平素不喜露面。奈何天生麗質(zhì),偶有露面,必引眾人圍觀。

時(shí)人有云:“桑基桑基,高貴美麗!”

桑基是何許圖也?

據(jù)筆者不嚴(yán)謹(jǐn)?shù)某闃犹釂柦y(tǒng)計(jì),90%想學(xué)習(xí)桑基圖的旁友,都是被她妖艷炫酷的外表所吸引。

而桑基圖真正代表了什么?和類似圖表相比的獨(dú)特性是什么?卻幾乎無人問津。

害!人真的是視覺動(dòng)物!

言歸正傳,我們來看看百科的官方解釋:

桑基圖(Sankey diagram),即桑基能量分流圖,也叫桑基能量平衡圖。它是一種特定類型的流程圖,圖中延伸的分支的寬度對(duì)應(yīng)數(shù)據(jù)流量的大小,通常應(yīng)用于能源、材料成分、金融等數(shù)據(jù)的可視化分析。因1898年Matthew Henry Phineas Riall Sankey繪制的"蒸汽機(jī)的能源效率圖"而聞名,此后便以其名字命名為"桑基圖"。

Emmm,有點(diǎn)內(nèi)個(gè)意思了,結(jié)合其他資料,做進(jìn)一步的匯總提煉:

桑基兩個(gè)字取自“發(fā)明”者的名字

屬于流程圖的一種,核心在于展示數(shù)據(jù)的流轉(zhuǎn)

主要由節(jié)點(diǎn)、邊和流量三要素構(gòu)成,邊越寬代表流量越大

遵循守恒定律,無論怎么流動(dòng),開端和末端數(shù)據(jù)總是一致的

文字太蒼白,下面我們用Python來繪制一個(gè)具體的實(shí)例。

Python手把手繪制桑基圖

動(dòng)手之前,我們?cè)俅吻煤诎?#xff0c;回顧桑基圖組成要素的重點(diǎn)——節(jié)點(diǎn)、邊和流量。

任何桑基圖,無論展現(xiàn)形式如何夸張,色彩如何艷麗,動(dòng)效如何炫酷,本質(zhì)都逃不出上述3點(diǎn)。

只要我們定義好上述3個(gè)要素,Python的pyecharts庫(kù)能夠輕松實(shí)現(xiàn)桑基圖的繪制。

這里我們用“當(dāng)代青年熬夜原因分析”數(shù)據(jù)為例:

(數(shù)據(jù)來源:這個(gè)數(shù)據(jù)是筆者近兩周賣炒粉時(shí)口頭做的調(diào)研)

很規(guī)整的性別、熬夜原因、人數(shù)三列數(shù)據(jù)。

不過,要用pyecharts來畫圖,得入鄉(xiāng)隨俗,按照它定的規(guī)則來規(guī)整數(shù)據(jù)源。

首先是節(jié)點(diǎn),這一步需要把所有涉及到的節(jié)點(diǎn)去重規(guī)整在一起。也就是要把性別一列的“男”、“女”和熬夜原因一列的“打游戲”、“加班”、“看劇”以列表內(nèi)嵌套字典的形式去重匯總:

接著,定義邊和流量,數(shù)據(jù)從哪里流向哪里,流量(值)是多少,循環(huán)+字典依然可以輕松搞定:

source-target-value的字典格式,很清晰的描述了數(shù)據(jù)的流轉(zhuǎn)情況。

這兩塊數(shù)據(jù)準(zhǔn)備完畢,桑基圖已經(jīng)完成了80%,剩下的20%,只是固定格式的繪圖代碼:

frompyecharts.charts importSankey

frompyecharts importoptions asopts

pic = (Sankey.add( '', #圖例名稱nodes, #傳入節(jié)點(diǎn)數(shù)據(jù)linkes, #傳入邊和流量數(shù)據(jù)#設(shè)置透明度、彎曲度、顏色linestyle_opt=opts.LineStyleOpts(opacity = 0.3, curve = 0.5, color = "source"),#標(biāo)簽顯示位置label_opts=opts.LabelOpts(position= "right"),#節(jié)點(diǎn)之前的距離node_gap = 30,).set_global_opts(title_opts=opts.TitleOpts(title = '熬夜原因桑基圖')))

pic.render( 'test.html')

一個(gè)回車下去,看看成果:

果然,男打游戲女看劇,加班熬夜是兒戲。

如果想要垂直顯示,只需要在add函數(shù)里面加一個(gè)orient="vertical"就好:

pic = (Sankey. add( '',nodes,linkes,linestyle_opt=opts.LineStyleOpts(opacity = 0.3, curve = 0.5, color = "source"),label_opts=opts.LabelOpts(position= "top"),node_gap = 30,orient= "vertical", #更改的是這里).set_global_opts(title_opts=opts.TitleOpts(title = '熬夜原因細(xì)分桑基圖')))pic.render( 'test2.html')

OK!不過,還有同學(xué)意猶未盡,這個(gè)是涉及到兩層的流轉(zhuǎn),那如果三層,需要怎么畫呢?

不慌,先導(dǎo)入(狗糧)數(shù)據(jù):

這是某寵物品牌,3月份主要產(chǎn)品購(gòu)買路徑(第一次和第二次)的數(shù)據(jù),先是品類,其次是第一次購(gòu)買的產(chǎn)品類型,接著是第二次購(gòu)買的產(chǎn)品類型,最后一列對(duì)應(yīng)人數(shù)。

(注:這里第一次購(gòu)買的產(chǎn)品前面加了“1-”,第二次購(gòu)買加了“2-”的區(qū)分標(biāo)識(shí)。)

畫圖必備的nodes節(jié)點(diǎn)實(shí)現(xiàn)很簡(jiǎn)單,所有節(jié)點(diǎn)(品類、第一次購(gòu)買、第二次購(gòu)買)做去重匯總,對(duì)上面生成nodes代碼稍作調(diào)整就可以:

而linkes只接受source-traget-value的格式,得先對(duì)源數(shù)據(jù)進(jìn)行格式調(diào)整,分別形成“品類-第一次購(gòu)買-人數(shù)”,“第一次購(gòu)買-第二次購(gòu)買-人數(shù)”的樣式,再統(tǒng)一匯總:

規(guī)整匯總好之后,只需要復(fù)用上面的linkes代碼:

畫圖代碼幾乎沒變,只是改了個(gè)標(biāo)題:

pic = (Sankey. add( '',nodes,linkes,linestyle_opt=opts.LineStyleOpts(opacity = 0.3, curve = 0.5, color = 'source'),label_opts=opts.LabelOpts(position = 'top'),node_gap = 30,).set_global_opts(title_opts=opts.TitleOpts(title = '客戶購(gòu)買路徑流轉(zhuǎn)圖')))pic.render( 'test3.html')

大功告成,So easy!無論是多少層數(shù)據(jù)的流轉(zhuǎn),只要定義好nodes和linkes,就能以不變應(yīng)萬變。

最后,通過上面的桑基圖,我們能夠非常直觀的洞察到客戶購(gòu)買流轉(zhuǎn)規(guī)律:

出于試錯(cuò)成本的考量,大部分客戶第一次購(gòu)買的是小規(guī)格狗糧。

第一次購(gòu)買小規(guī)格狗糧的客戶,流失(第二次未購(gòu)買)情況嚴(yán)重,且再次購(gòu)買客戶,更傾向于繼續(xù)選擇小規(guī)格狗糧嘗試,而不是信任性的購(gòu)買大規(guī)格狗糧。

第一次購(gòu)買大規(guī)格狗糧的客戶,留存下來的客戶已經(jīng)建立起對(duì)品牌的信任感,再次購(gòu)買大部分選擇了大規(guī)格狗糧。

購(gòu)買狗糧的客戶第二次復(fù)購(gòu)鮮有嘗試玩具的,而第一次購(gòu)買玩具的客戶,也并未建立起對(duì)品牌狗糧的興趣。

原本死板的數(shù)據(jù),在桑基的裝扮之下,變得楚楚動(dòng)人。

作者:周志鵬,3年數(shù)據(jù)分析,深切感受到數(shù)據(jù)分析的有趣和學(xué)習(xí)過程中缺少案例的無奈,遂新開公眾號(hào)「數(shù)據(jù)不吹牛」,定期更新數(shù)據(jù)分析相關(guān)技巧和有趣案例(含實(shí)戰(zhàn)數(shù)據(jù)集),歡迎大家關(guān)注交流。

聲明:本文為作者投稿,版權(quán)歸其所有。

?業(yè)內(nèi)最大的“空氣幣”——以太坊???返回搜狐,查看更多

責(zé)任編輯:

總結(jié)

以上是生活随笔為你收集整理的用python画皇冠_手把手教你用 Python 绘制酷炫的桑基图!的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。