桑基圖(Sankey Diagram)是一種可視化方法,通常用于表示復雜的流程和交互關系。在 Python 中,可以使用 matplotlib 庫和它的擴展包 matplotlib.sankey 來繪制桑基圖。下面,我們來看一下如何利用 Python 畫出一個簡單的桑基圖。
import matplotlib.pyplot as plt from matplotlib.sankey import Sankey # 定義桑基圖的流程 flows = [120, 80, 50, 30] labels = ['流程一', '流程二', '流程三', '流程四'] # 定義桑基圖的流向 links = [ (0, 1, 60), (1, 2, 40), (2, 3, 20), (0, 3, 60) ] # 創建一個 Sankey 圖形對象 sankey = Sankey() # 添加流程和標簽 for i in range(len(flows)): sankey.add(flows[i], label=labels[i]) # 添加流向 for link in links: sankey.add(flows=link[2], path=[link[0], link[1]], color='b' if link[1]==2 else 'r') # 繪制桑基圖 sankey.finish() plt.show()
首先,我們定義了桑基圖的流程和標簽,這里有四個流程,分別表示為 “流程一”、“流程二”、“流程三”、“流程四”,對應的流量為 120, 80, 50, 30。接下來,我們定義了桑基圖的流向,這里有四個流向,分別表示為 0 ->1、1 ->2、2 ->3、0 ->3,對應的流出量分別為 60、40、20、60。
然后,我們創建了一個 Sankey 圖形對象,并依次添加了流程和標簽以及流向。在添加流向時,我們可以指定流向的顏色,例如這里如果流向的終點是 “流程三”,那么流向就會以藍色表示。
最后,我們調用 sankey.finish() 方法,繪制出了桑基圖。運行代碼后,我們可以得到如下的圖形:
![Sankey Diagram](https://i.imgur.com/LYba0zX.png)