條形圖是比較基礎的繪圖手法之一,接下來将使用matplotlib進行繪圖。從簡單的條形圖到多個系列的條形圖到堆疊條形圖:
文章目錄
-
- 簡單的條形圖(一個展示序列)
- 繪制橫向的條形圖
- 繪制系列條形圖
- 堆疊條形圖
- 利用pandas優雅繪制條形圖
-
- pandas繪制基礎條形圖
- 使用pandas繪制系列條形圖和堆疊條形圖
- 導入必要的包
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
簡單的條形圖(一個展示序列)
series = np.array([3, 5, 7, 10, 3])
plt.bar(x=list('ABCDE'), height=series, color='tab:green', width=.5)
plt.show()

繪制橫向的條形圖
# barh方法實作, 對應的height->width
plt.barh(y=list('abcde'), width=series, height=.5)
plt.show()
繪制系列條形圖
系列資料的繪制可以參考官方示例
示例結果:
- 準備兩個系列資料
series = np.array([3, 5, 7, 10, 3])
series1 = np.array([3, 5, 9, 11, 3])
labels = list('ABCDE')
x = np.arange(len(labels))
width = 0.35
plt.bar(x-width/2, series, width, label='ser')
plt.bar(x+width/2, series1, width, label='ser1')
plt.legend()
plt.xticks(x, labels)
plt.show()
堆疊條形圖
同樣的資料,采樣數值堆疊的方式繪圖(百分比堆疊可以自行計算後繪制):
labels = list('ABCDE')
x = np.arange(len(labels))
width=0.5
plt.bar(x, series, width, label='ser')
plt.bar(x, series1, width, bottom=series, label='ser1')
plt.legend()
plt.xticks(x, labels)
plt.show()
利用pandas優雅繪制條形圖
pandas繪制基礎條形圖
基礎條形圖包含一列資料,我們可以使用pd.Series資料結構來處理,以上面的series為例子:
ser = pd.Series(series, index=list('ABCDE'), name='ser')
color=np.array([183, 222, 232])/255 # 自定義顔色
ser.plot(kind='bar', color=color, rot=0) # rot指定x軸标簽方向
plt.legend() # 選擇是否顯示系列标簽
plt.show()
使用pandas繪制單個系列的條形圖還看不出優勢,我們可以使用DataFrame資料結構來繪制多個系列的系列條形圖和堆疊條形圖!
使用pandas繪制系列條形圖和堆疊條形圖
- 準備資料
df = pd.DataFrame(np.array([series, series1]).T, index=list('ABCDE'), columns=['ser', 'ser1'])
df
ser | ser1 | |
---|---|---|
A | 3 | 3 |
B | 5 | 5 |
C | 7 | 9 |
D | 10 | 11 |
E | 3 | 3 |
- 繪制系列條形圖
df.plot(kind='bar', rot=0)
plt.show()
有沒有簡化很多?同樣我們可以橫向和堆疊條形圖
- 橫向系列條形圖
df.plot(kind='barh', rot=0)
plt.show()
- 繪制橫向堆疊條形圖
df.plot(kind='barh', stacked=True, rot=0)
plt.show()
怎麼樣!使用pandas之後是不是優雅了很多,如果您喜歡别忘了點贊關注!