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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

设计桑基图_教你用pyecharts制作交互式桑基图,赶快学起来吧!

發布時間:2024/7/19 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 设计桑基图_教你用pyecharts制作交互式桑基图,赶快学起来吧! 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

由于工作的需要,經常需要進行可視化展示,除了一些常用的BI工具,我也會使用python對數據進行可視化。

python的第三方可視化庫有很多,比如matplotlib、seaborn、plotly、bokeh、pyecharts等等。

這次就來說一說,如何用python的第三方庫-pyecharts制作交互式桑基圖。

示例

什么是桑基圖?

桑基圖是可視化圖表的一種,一般用來表示數據流量。

桑基圖(Sankey diagram),即桑基能量分流圖,也叫桑基能量平衡圖。它是一種特定類型的流程圖,圖中延伸的分支的寬度對應數據流量的大小,比較適用于用戶流量等數據的可視化分析。因1898年Matthew Henry Phineas Riall Sankey繪制的“蒸汽機的能源效率圖”而聞名,此后便以其名字命名為“桑基圖”。

桑基圖主要由邊、流量和支點組成,其中邊代表了流動的數據,流量代表了流動數據的具體數值,節點代表了不同分類。邊的寬度與流量成比例地顯示,邊越寬,數值越大。

舉個例子,假如我記錄了自己一段時間的消費金額,并且分門別類列出清單:

數據展示不足以一目了然地看出哪類消費多、哪類消費少,如果把它做成桑基圖,就可以很完美地展現消費特征:

靜圖

可交互

什么是pyecharts?

大部分人可能聽過echarts,它是百度旗下用于可視化設計的開源項目,而pyecharts則將echarts和python結合,方便在python中調用echarts接口,直接生成可視化圖表。

官方對pyecharts特性的描述:

  • 簡潔的 API 設計,使用如絲滑般流暢,支持鏈式調用
  • 囊括了 30+ 種常見圖表,應有盡有
  • 支持主流 Notebook 環境,Jupyter Notebook 和 JupyterLab
  • 可輕松集成至 Flask,Django 等主流 Web 框架
  • 高度靈活的配置項,可輕松搭配出精美的圖表
  • 詳細的文檔和示例,幫助開發者更快的上手項目
  • 多達 400+ 地圖文件以及原生的百度地圖,為地理數據可視化提供強有力的支持

pyecharts安裝過程很簡單,用pip安裝即可,在命令行輸入:

pip install pyecharts

你只需要簡單的代碼就可以生成圖表:

from pyecharts.charts import Barbar = Bar() bar.add_xaxis(["襯衫", "羊毛衫", "雪紡衫", "褲子", "高跟鞋", "襪子"]) bar.add_yaxis("商家A", [5, 20, 36, 10, 75, 90]) # render 會生成本地 HTML 文件,默認會在當前目錄生成 render.html 文件 # 也可以傳入路徑參數,如 bar.render("mycharts.html") bar.render()

使用pyecharts制作桑基圖

前面我們展示了一張生活開支交互式桑基圖:

下面就來用pyecharts實現它

桑基圖在pyecharts中通過Sankey方法實現,它接受兩個外部輸入。一個是所有類別的集合-nodes,一個是子類、父類、數據的三方集合-links。這兩個都是以json數據格式傳入,最后以html形式輸出圖表。

nodes:

links:

也就是說,首先你要把數據轉換成Sankey可以接受的形式。

第一步:數據準備

我們已經有這樣的數據表:

對數據進行整理,我的做法是先初步整理成:子類-父類-數據,以這樣的數據形式保存在csv中:

接著,寫個簡單轉換代碼,將上面數據轉換成nodes和links:

# 導入相關庫 import pandas as pd from pyecharts.charts import Page, Sankey from pyecharts import options as opts# 讀取csv文件 data = pd.read_csv(r'sample.csv',encoding='gbk',header=None)# 生成nodes nodes = [] nodes.append({'name':'總支出'}) for i in data[0].unique():dic = {}dic['name'] = inodes.append(dic)# 生成links links = [] for i in data.values:dic = {}dic['source'] = i[0]dic['target'] = i[1]dic['value'] = i[2]links.append(dic)

第二步:生成可視化結果

準備好nodes和links后,就可以調用Sankey函數

# pyecharts 所有方法均支持鏈式調用。 c = (Sankey().add( "費用/元",nodes,links,linestyle_opt=opts.LineStyleOpts(opacity=0.2, curve=0.5, color="source",type_="dotted"),label_opts=opts.LabelOpts(position="right",),).set_global_opts(title_opts=opts.TitleOpts(title="我的生活支出一覽"))) # 輸出html可視化結果 c.render('result.html')

你可以通過配置項otps來設置圖表的顏色、標簽、標題等信息,具體細節可以去官網查詢,這里不做贅述。

官網鏈接:https://pyecharts.org

第三步:打開html文件

生成html文件后,直接通過瀏覽器打開即可,就可以看到能交互的桑吉圖了

結論

本文介紹了如何使用pyecharts在python中制作交互式桑基圖,希望能給大家的可視化提供幫助!

總結

以上是生活随笔為你收集整理的设计桑基图_教你用pyecharts制作交互式桑基图,赶快学起来吧!的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。