天天看點

Python使用matplotlib繪制條形圖

條形圖是比較基礎的繪圖手法之一,接下來将使用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()
           
Python使用matplotlib繪制條形圖

繪制橫向的條形圖

# barh方法實作, 對應的height->width
plt.barh(y=list('abcde'), width=series, height=.5)
plt.show()
           
Python使用matplotlib繪制條形圖

繪制系列條形圖

系列資料的繪制可以參考官方示例

示例結果:

Python使用matplotlib繪制條形圖
  • 準備兩個系列資料
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()
           
Python使用matplotlib繪制條形圖

堆疊條形圖

同樣的資料,采樣數值堆疊的方式繪圖(百分比堆疊可以自行計算後繪制):

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()
           
Python使用matplotlib繪制條形圖

利用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()
           
Python使用matplotlib繪制條形圖

使用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()
           
Python使用matplotlib繪制條形圖

有沒有簡化很多?同樣我們可以橫向和堆疊條形圖

  • 橫向系列條形圖
df.plot(kind='barh', rot=0)
plt.show()
           
Python使用matplotlib繪制條形圖
  • 繪制橫向堆疊條形圖
df.plot(kind='barh', stacked=True, rot=0)
plt.show()
           
Python使用matplotlib繪制條形圖

怎麼樣!使用pandas之後是不是優雅了很多,如果您喜歡别忘了點贊關注!