首頁(yè)技術(shù)文章正文

Python培訓(xùn)之可視化技術(shù):?;鶊D怎么做?

更新時(shí)間:2022-06-14 來(lái)源:黑馬程序員 瀏覽量:

  今天的Python培訓(xùn),我們主要講一下?;鶊D。桑基圖亦稱為?;芰糠至鲌D、桑基能量平衡圖,是一種特定類型的流程圖,用于展示數(shù)據(jù)的“流動(dòng)”變化。?;鶊D中包含若干條從左到右延展的分支,每條分支的寬度代表著數(shù)據(jù)流量的大小,且所有主支寬度的總和等于所有分支寬度的總和,常見于能源、材料成分等場(chǎng)景或金融領(lǐng)域。

  matplotlib.sankey模塊中專門提供了表示桑基圖的類Sankey,通過(guò)創(chuàng)建Sankey類的對(duì)象可以創(chuàng)建桑基圖,之后可以調(diào)用add()方法為桑基圖添加一些配置選項(xiàng),最后調(diào)用finish()方法完成?;鶊D的繪制。

  假設(shè)現(xiàn)在小明家日常生活的開支主要分為工資、副業(yè)、生活、購(gòu)物、深造、運(yùn)動(dòng)、其他和買書幾類,且其中每項(xiàng)投入或產(chǎn)出值分別為0.7、0.3、-0.3、-0.1、-0.3、-0.1、-0.1、-0.1。

  下面結(jié)合這些日常生活開支的數(shù)據(jù)繪制一個(gè)桑基圖,示例代碼如下。

import matplotlib.pyplot as plt
from matplotlib.sankey import Sankey
plt.rcParams["font.sans-serif"] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False
# 消費(fèi)收入與支出數(shù)據(jù)
flows = [0.7, 0.3, -0.3, -0.1, -0.3, -0.1, -0.1, -0.1]
# 流的標(biāo)簽列表
labels = ["工資", "副業(yè)", "生活", "購(gòu)物", "深造", "運(yùn)動(dòng)", "其他", "買書"]
# 流的方向
orientations = [1, 1, 0, -1, 1, -1, 1, 0]
sankey = Sankey()
# 為?;鶊D添加數(shù)據(jù)
sankey.add(flows=flows,                    # 收入與支出數(shù)據(jù)
           labels=labels,                  # 數(shù)據(jù)標(biāo)簽
           orientations=orientations,      # 標(biāo)簽顯示的方向
           color="black",                  # 邊緣線條顏色
           fc="lightgreen",                # 填充顏色
           patchlabel="生活消費(fèi)",           # 圖表中心的標(biāo)簽
           alpha=0.7)                      # 透明度
# 桑基圖繪制完成的對(duì)象
diagrams = sankey.finish()
diagrams[0].texts[4].set_color("r")   #將下標(biāo)為4的數(shù)據(jù)標(biāo)簽設(shè)為紅色
diagrams[0].texts[4].set_weight("bold")  #將下標(biāo)為4的數(shù)據(jù)標(biāo)簽設(shè)為字體加粗
diagrams[0].text.set_fontsize(20)        #將中心標(biāo)簽的字體大小設(shè)為20
diagrams[0].text.set_fontweight("bold")  #將中心標(biāo)簽的字體設(shè)為加粗
plt.title("日常生活開支的?;鶊D")
plt.show()

  運(yùn)行程序,效果如圖8-18所示。

1655175484036_日常生活開支的桑基圖.jpg

  圖8-18 日常生活開支的?;鶊D

  圖8-18中,桑基圖的各個(gè)分支代表生活消費(fèi)的每個(gè)選項(xiàng),其中分支末端呈內(nèi)凹形狀的分支代表收入的數(shù)據(jù),呈箭頭形狀的分支代表支出的數(shù)據(jù)。由圖8-18可知,工資和副業(yè)這2個(gè)選項(xiàng)代表的分支均屬于生活消費(fèi)的收入數(shù)據(jù),其余選項(xiàng)的分支均屬于生活消費(fèi)的支出數(shù)據(jù),且深造選項(xiàng)的支出最多。

分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!