天天看點

python 畫條形圖(柱狀圖)1. 豎放條形圖2. 橫放條形圖3. 并列條形圖

文章目錄

  • 1. 豎放條形圖
        • bar(x, height, [width], **kwargs)
  • 2. 橫放條形圖
        • bar(x, width, [height], **kwargs)
  • 3. 并列條形圖

條形圖(bar chart),也稱為柱狀圖,是一種以長方形的長度為變量的統計圖表,長方形的長度與它所對應的變量數值呈一定比例。

1. 豎放條形圖

畫條形圖要用到 pyplot 中的 bar 函數,該函數的基本文法為:

bar(x, height, [width], **kwargs)

x 數組,每個條形的橫坐标
height 個數或一個數組,條形的高度
[width] 可選參數,一個數或一個數組,條形的寬度,預設為 0.8
**kwargs 不定長的關鍵字參數,用字典形式設定條形圖的其他屬性

**kwargs 中常設定的參數包括圖形标簽 label,顔色标簽 color,不透明度 alpha 等。

假設某項針對男女大學生購買飲用水愛好的調查結果如下表:

碳酸飲料 6 9
綠茶 7 4
礦泉水 6 4
其他 2 6
果汁 1 5
總計 22 28

畫出男生飲用水情況的直方圖,代碼如下:

import matplotlib.pyplot as plt

# 這兩行代碼解決 plt 中文顯示的問題
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

waters = ('碳酸飲料', '綠茶', '礦泉水', '果汁', '其他')
buy_number = [6, 7, 6, 1, 2]

plt.bar(waters, buy_number)
plt.title('男性購買飲用水情況的調查結果')

plt.show()
           

圖形:

python 畫條形圖(柱狀圖)1. 豎放條形圖2. 橫放條形圖3. 并列條形圖

2. 橫放條形圖

若要生成橫的條形圖,則可以使用 barh 函數,其文法與 bar 函數非常類似。

bar(x, width, [height], **kwargs)

y 數組,每個條形的縱坐标
width 一個數或一個數組,條形的寬度
[height] 可選參數,一個數或一個數組,條形的高度,預設為 0.8
**kwargs 不定長的關鍵字參數,用字典形式設定條形圖的其他屬性

代碼:

import matplotlib.pyplot as plt

# 這兩行代碼解決 plt 中文顯示的問題
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

waters = ('碳酸飲料', '綠茶', '礦泉水', '果汁', '其他')
buy_number = [6, 7, 6, 1, 2]

plt.barh(waters, buy_number)  # 橫放條形圖函數 barh
plt.title('男性購買飲用水情況的調查結果')

plt.show()
           
python 畫條形圖(柱狀圖)1. 豎放條形圖2. 橫放條形圖3. 并列條形圖

3. 并列條形圖

若要将男生與女生的調查情況畫出兩個條形圖一塊顯示,則可以使用 bar 或 barh 函數兩次,并調整 bar 或 barh 函數的條形圖位置坐标以及相應刻度,使得兩組條形圖能夠并排顯示。

import matplotlib.pyplot as plt
import numpy as np

# 這兩行代碼解決 plt 中文顯示的問題
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

# 輸入統計資料
waters = ('碳酸飲料', '綠茶', '礦泉水', '果汁', '其他')
buy_number_male = [6, 7, 6, 1, 2]
buy_number_female = [9, 4, 4, 5, 6]

bar_width = 0.3  # 條形寬度
index_male = np.arange(len(waters))  # 男生條形圖的橫坐标
index_female = index_male + bar_width  # 女生條形圖的橫坐标

# 使用兩次 bar 函數畫出兩組條形圖
plt.bar(index_male, height=buy_number_male, width=bar_width, color='b', label='男性')
plt.bar(index_female, height=buy_number_female, width=bar_width, color='g', label='女性')

plt.legend()  # 顯示圖例
plt.xticks(index_male + bar_width/2, waters)  # 讓橫坐标軸刻度顯示 waters 裡的飲用水, index_male + bar_width/2 為橫坐标軸刻度的位置
plt.ylabel('購買量')  # 縱坐标軸标題
plt.title('購買飲用水情況的調查結果')  # 圖形标題

plt.show()
           

顯示:

python 畫條形圖(柱狀圖)1. 豎放條形圖2. 橫放條形圖3. 并列條形圖