精通Python數據可視化:Matplotlib柱狀圖、直方圖與餅狀圖實戰解析
引言
在數據分析和科學研究中,數據可視化扮演著至關重要的角色。Matplotlib是Python中一個廣泛使用的繪圖庫,它提供了豐富的繪圖功能和靈活的定制選項。本文將詳細介紹如何使用Matplotlib繪制柱狀圖、直方圖和餅狀圖,通過具體的代碼示例幫助讀者掌握這些圖表的繪制方法。
一、柱狀圖(Bar Chart)
柱狀圖是一種用矩形條表示數據的圖表,它主要用于展示不同類別的比較關系。Matplotlib提供了bar()
函數來繪制柱狀圖。
1. 基本的豎直柱狀圖
import matplotlib.pyplot as plt
import numpy as np# 數據準備
categories = ['A', 'B', 'C', 'D', 'E']
values = [23, 45, 56, 78, 90]# 繪制柱狀圖
plt.figure(figsize=(10, 6)) # 設置圖像大小
plt.bar(categories, values, color='skyblue') # 繪制豎直柱狀圖
plt.xlabel('Category') # X軸標簽
plt.ylabel('Values') # Y軸標簽
plt.title('Basic Vertical Bar Chart') # 圖表標題
plt.grid(axis='y', alpha=0.5) # 添加網格線
plt.show()
2. 同位置多柱狀圖
同位置多柱狀圖用于展示同一類別下不同指標的比較。
# 數據準備
categories = ['Norway', 'Germany', 'China', 'USA', 'Sweden']
gold = [16, 12, 9, 8, 8]
silver = [8, 10, 4, 10, 5]
bronze = [13, 5, 2, 7, 5]# 柱狀圖寬度
bar_width = 0.3# 計算每個柱狀圖的起始位置
index = np.arange(len(categories))
gold_bars = index
silver_bars = [x + bar_width for x in index]
bronze_bars = [x + bar_width * 2 for x in index]# 繪制柱狀圖
plt.figure(figsize=(10, 6))
plt.bar(gold_bars, gold, width=bar_width, label='Gold', color='gold')
plt.bar(silver_bars, silver, width=bar_width, label='Silver', color='silver')
plt.bar(bronze_bars, bronze, width=bar_width, label='Bronze', color='brown')# 添加X軸標簽和圖例
plt.xlabel('Country')
plt.ylabel('Medals')
plt.title('Medals Won by Countries')
plt.xticks([r + bar_width for r in range(len(categories))], categories)
plt.legend()
plt.show()
3. 堆疊柱狀圖
堆疊柱狀圖用于展示同一類別下不同組成部分的總和。
# 數據準備
categories = ['Category 1', 'Category 2', 'Category 3', 'Category 4']
values1 = [23, 34, 45, 56]
values2 = [12, 23, 34, 45]# 繪制堆疊柱狀圖
plt.figure(figsize=(10, 6))
plt.bar(categories, values1, label='Part 1', color='skyblue')
plt.bar(categories, values2, bottom=values1, label='Part 2', color='lightcoral')# 添加標簽和圖例
plt.xlabel('Category')
plt.ylabel('Values')
plt.title('Stacked Bar Chart')
plt.legend()
plt.show()
二、直方圖(Histogram)
直方圖是一種特殊的條形圖,用于表示連續變量的分布。Matplotlib提供了hist()
函數來繪制直方圖。
# 數據準備
data = np.random.randn(1000) # 生成1000個正態分布隨機數# 繪制直方圖
plt.figure(figsize=(10, 6))
plt.hist(data, bins=30, color='skyblue', alpha=0.7, edgecolor='black')
plt.xlabel('Value')
plt.ylabel('Frequency')
plt.title('Histogram of Normally Distributed Data')
plt.grid(axis='y', alpha=0.5)
plt.show()
三、餅狀圖(Pie Chart)
餅狀圖是一種使用扇形區域來表示數據比例的圖表。Matplotlib提供了pie()
函數來繪制餅狀圖。
# 數據準備
labels = 'Frogs', 'Hogs', 'Dogs', 'Logs'
sizes = [15, 30, 45, 10]
colors = ['gold', 'yellowgreen', 'lightcoral', 'lightskyblue']
explode = (0.1, 0, 0, 0) # 只將第一個扇形區域突出顯示# 繪制餅狀圖
plt.figure(figsize=(8, 8))
plt.pie(sizes, explode=explode, labels=labels, colors=colors, autopct='%1.1f%%', startangle=140)
plt.axis('equal') # 確保餅圖是圓的
plt.title('Pie Chart Example')
plt.show()
結論
通過本文的詳細介紹和代碼示例,希望讀者能夠掌握使用Matplotlib繪制柱狀圖、直方圖和餅狀圖的方法。這些圖表在數據分析和可視化中非常常用,掌握它們的繪制技巧將有助于更好地理解和展示數據。在實際應用中,讀者可以根據具體需求調整圖表的參數和樣式,以達到最佳的視覺效果和數據分析目的。