從零開始學matplotlib畫圖(四): 並列柱狀圖
阿新 • • 發佈:2018-11-11
堆積柱狀圖有堆積柱狀圖的好處,比如說我們可以很方便地看到多分類總和的趨勢。
但是我們發現,在堆積柱狀圖中,由於基底位置的不同,我們並不能很輕易地弄清楚上方分類的資料的變化趨勢。
因此當分類不是特別多,且我們對於總量趨勢的重視程度不如各分類的時候,我們就可以考慮使用並列柱狀圖,這也是一種非常常見的圖形。
跟上次一樣,我們拿小明20次月考的語數外三門科目的成績來演示並列柱狀圖。
import matplotlib.pyplot as plt
import numpy as np
# 生成資料
x = np.linspace(1, 21, 20)
y1 = np.random. randint(70, 90, 20) # 語文成績
y2 = np.random.randint(80, 100, 20) # 數學成績
y3 = np.random.randint(60, 80, 20) # 英語成績
# 畫圖
plt.figure(figsize=(20, 10))
# 語文
plt.bar(x, y1,
width = 0.25,
color = 'c',
align = 'center',
label = '語文',
alpha = 0.5
)
# 數學
plt.bar(x+0.25, y2,
width = 0.25,
color = 'r',
align = 'center',
label = '數學',
alpha = 0.5
)
# 英語
plt.bar(x+0.5, y3,
width = 0.25,
color = 'b',
align = 'center',
label = '英語',
alpha = 0.5
)
# 新增三門科目成績的均值參考線
# 語文
plt.axhline(y = np.mean(y1),
c = 'c',
ls = '--',
lw = 2,
alpha = 0.6)
# 數學
plt.axhline(y = np.mean(y2),
c = 'r',
ls = '--',
lw = 2,
alpha = 0.6)
# 英語
plt.axhline(y = np.mean(y3),
c = 'b',
ls = '--',
lw = 2,
alpha = 0.6)
# 及格線
plt.axhline(y = 60,
c = 'gray',
ls = '--',
lw = 2,
alpha = 0.6)
# 圖例
plt.legend(loc = 'upper right')
# 標題
plt.title('小明20次月考成績趨勢圖')
可以看到,小明有些偏科,數學成績明顯好於另外兩科,同時英語成績基本上是最差的,只怕到了大學,小明就是一個標準的理工男……
我們在這裡使用了第一節裡提到的axhline()方法來新增參考線,這樣我們就能清晰地知道小明每次考試不同科目相比於均值來說是高了還是低了。