前言
本文的文字及圖片來源于網路,僅供學習、交流使用,不具有任何商業用途,著作權歸原作者所有,如有問題請及時聯系我們以作處理,
蘿卜 | 作者
資料不吹牛 | 來源
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檔案等
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/10153.html
標籤:Python
