1. 程式人生 > 實用技巧 >Python資料視覺化:象限圖的應用

Python資料視覺化:象限圖的應用

前言

本文的文字及圖片來源於網路,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯絡我們以作處理。

蘿蔔 | 作者

資料不吹牛 | 來源

Python 的繪圖功能非常強大,如果能將已有的繪相簿的各種複雜操作彙總在一個自己寫的函式甚至是庫/包中,並實現一行程式碼就呼叫並實現複雜的繪圖功能,那就更是如虎添翼。

今天,我們就來講講一學就會的象限圖。

上圖學名叫波士頓矩陣分析圖,大白話四象限圖。這種圖經常用於兩個維度的散點圖中,根據特定的分割線(均值,目標值,實際值等)將資料分為四類,使人一目瞭然。

常用的場景為分析兩個維度的變化比如:比較商品的庫存天數和庫存週轉率,充值人數和每付費使用者平均收益,購物籃係數和購物籃數量等。

如何使用 Python 畫出此圖是本文的目標,事不宜遲,趕快開始!

任何複雜的 Python 繪圖都不是一蹴而就的,而是先畫出基礎圖形,後在此基礎上按需新增元素並優化而成。這裡以一組城市經濟資料為例來講解繪圖步驟

基礎散點圖

df = pd.read_csv('data.csv')
df; df.plot(kind='scatter', x='經濟總量水平', y='人均水平')

簡潔又樸素的散點圖,僅需一行程式碼。離期望成圖還差幾步

  • 為每個點新增對應的城市名稱
  • 新增特定的分割線(均值,目標值,實際值)
  • 背景新增網格
  • 一些其他的定製需求...

影象優化

成圖如下:

從上圖可以看出:

  • 廣西,河北,福建三地的人均水平和經濟總量水平都偏低
  • 上海的人均經濟水平很高,但經濟總量水平缺只是略優於均值
  • 廣東的人均經濟水平稍次於均值,但經濟總量水平很高
  • 等等~

當然,如果我們通過新增數量更多的定製線也可以實現常用的九宮格圖

《資料化管理》庫存天數與銷售數量分析

最後總結一下,Python 的一些繪圖方法、引數看似瑣碎,但積累到一定程度後,便可以發現許多技巧都存在共通之處。小事情重複做也會成為大麻煩,所以高手都懂得分類處理。

貫通了 3 個核心,我們才能省時省事,成為別人眼中的高手:

  • 大量重複的工作懂得批處理。
  • 反覆要做的固定操作固化成" 模板 “,” 套路 "。
  • 碰到異常情況,知道如何準確高效的解決。

所以我們可以將四象限圖的繪製方法封裝成自己的函式以供快捷呼叫,篇幅原因就不多展示了。

上文核心程式碼如下:

import matplotlib.pyplot as plt

# 為每個點新增對應的城市名稱
plt.figure(figsize=(10, 8))
# 基礎散點圖:這裡需要單獨拆開 x,y 軸和希望配對的標籤,為下面的輪子做準備
x, y = df['經濟總量水平'], df['人均水平']
label = df['area']
plt.scatter(x, y)
plt.xlabel('經濟總量水平'); plt.ylabel('人均水平')

# 對散點圖中的每一個點進行文字標註
 ## 固定程式碼,無需深究,拿來即用
for a,b,l in zip(x,y,label): # zip 拉鍊函式將其配對組合
    plt.text(a, b+0.1, '%s.' % l, ha='center', va='bottom', 
                                             fontsize=14)
               # 0.1 向上輕微偏移
        
# 新增特定分割線
 ## vlines: vertical 垂直於 x 軸的線,在變數'經濟總量'的均值處開始畫,
   ## y 軸的範圍[1.5, 3]
plt.vlines(x=df['經濟總量水平'].mean(), ymin=-1.5, ymax=3, 
           colors='red', linewidth=2)
plt.hlines(y=df['人均水平'].mean(), xmin=-4, xmax=6,
           colors='red', linewidth=2)

# 背景網格
plt.grid(True)
# 定製需求:隱去四周的邊框線條
# sns.despine(trim=True, left=True, bottom=True)

PS:如有需要Python學習資料的小夥伴可以加下方的群去找免費管理員領取

可以免費領取原始碼、專案實戰視訊、PDF檔案等