Matplotlib 是一個用于創建靜態、動態和交互式可視化的 Python 庫。它是 Python 數據科學生態系統中最常用的繪圖庫之一,廣泛應用于數據分析、科學研究、工程繪圖等領域。Matplotlib 提供了豐富的繪圖功能,能夠生成高質量的圖形,支持多種輸出格式,包括 PNG、PDF、SVG 等。
Matplotlib 由 John D. Hunter 于 2003 年創建,最初是為了替代 MATLAB 的繪圖功能。隨著時間的推移,Matplotlib 逐漸發展成為一個功能強大且靈活的繪圖庫,吸引了大量的用戶和貢獻者。如今,Matplotlib 已經成為 Python 社區中最受歡迎的繪圖工具之一。
在 Matplotlib 中,Figure
對象代表整個圖形窗口,而 Axes
對象則代表圖形中的子圖。一個 Figure
可以包含多個 Axes
,每個 Axes
都可以獨立地進行繪圖操作。
import matplotlib.pyplot as plt
fig, ax = plt.subplots() # 創建一個 Figure 和一個 Axes
ax.plot([1, 2, 3], [4, 5, 6]) # 在 Axes 上繪制一條線
plt.show() # 顯示圖形
Matplotlib 提供了多種繪圖函數,用于創建不同類型的圖形。常見的繪圖函數包括:
plot()
:繪制線圖scatter()
:繪制散點圖bar()
:繪制柱狀圖hist()
:繪制直方圖pie()
:繪制餅圖import matplotlib.pyplot as plt
# 繪制線圖
plt.plot([1, 2, 3], [4, 5, 6], label='Line 1')
plt.plot([1, 2, 3], [6, 5, 4], label='Line 2')
plt.legend() # 顯示圖例
plt.show()
# 繪制散點圖
plt.scatter([1, 2, 3], [4, 5, 6])
plt.show()
# 繪制柱狀圖
plt.bar(['A', 'B', 'C'], [10, 20, 30])
plt.show()
# 繪制直方圖
plt.hist([1, 2, 2, 3, 3, 3, 4, 4, 4, 4])
plt.show()
# 繪制餅圖
plt.pie([10, 20, 30], labels=['A', 'B', 'C'])
plt.show()
Matplotlib 允許用戶對圖形進行高度自定義,包括設置標題、標簽、刻度、顏色、線型、標記等。
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot([1, 2, 3], [4, 5, 6], color='red', linestyle='--', marker='o', label='Line 1')
ax.set_title('Customized Plot') # 設置標題
ax.set_xlabel('X-axis') # 設置 X 軸標簽
ax.set_ylabel('Y-axis') # 設置 Y 軸標簽
ax.legend() # 顯示圖例
plt.show()
Matplotlib 提供了多種子圖布局方式,允許用戶在同一個圖形窗口中創建多個子圖。常見的布局方式包括 subplot()
和 subplots()
。
import matplotlib.pyplot as plt
# 使用 subplot() 創建子圖
plt.subplot(2, 1, 1) # 創建 2 行 1 列的子圖,選擇第 1 個子圖
plt.plot([1, 2, 3], [4, 5, 6])
plt.subplot(2, 1, 2) # 選擇第 2 個子圖
plt.plot([1, 2, 3], [6, 5, 4])
plt.show()
# 使用 subplots() 創建子圖
fig, axs = plt.subplots(2, 2) # 創建 2 行 2 列的子圖
axs[0, 0].plot([1, 2, 3], [4, 5, 6])
axs[0, 1].scatter([1, 2, 3], [4, 5, 6])
axs[1, 0].bar(['A', 'B', 'C'], [10, 20, 30])
axs[1, 1].hist([1, 2, 2, 3, 3, 3, 4, 4, 4, 4])
plt.show()
Matplotlib 支持 3D 繪圖,可以創建三維散點圖、曲面圖、線圖等。
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d') # 創建 3D 子圖
# 繪制 3D 散點圖
ax.scatter([1, 2, 3], [4, 5, 6], [7, 8, 9])
plt.show()
# 繪制 3D 曲面圖
import numpy as np
X = np.linspace(-5, 5, 100)
Y = np.linspace(-5, 5, 100)
X, Y = np.meshgrid(X, Y)
Z = np.sin(np.sqrt(X**2 + Y**2))
ax.plot_surface(X, Y, Z, cmap='viridis')
plt.show()
Matplotlib 支持創建動畫,可以通過 FuncAnimation
類實現。
import matplotlib.pyplot as plt
import matplotlib.animation as animation
import numpy as np
fig, ax = plt.subplots()
x = np.linspace(0, 2 * np.pi, 100)
line, = ax.plot(x, np.sin(x))
def animate(i):
line.set_ydata(np.sin(x + i / 10.0)) # 更新數據
return line,
ani = animation.FuncAnimation(fig, animate, frames=100, interval=50, blit=True)
plt.show()
Matplotlib 的功能可以通過擴展庫進一步增強。常見的擴展庫包括:
import seaborn as sns
import pandas as pd
# 使用 Seaborn 繪制圖形
sns.set(style="darkgrid")
tips = sns.load_dataset("tips")
sns.relplot(x="total_bill", y="tip", hue="smoker", style="time", data=tips)
plt.show()
# 使用 Pandas 繪制圖形
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
df.plot(kind='bar')
plt.show()
Matplotlib 是 Python 中最強大的繪圖庫之一,提供了豐富的繪圖功能和高度自定義的選項。無論是簡單的線圖、散點圖,還是復雜的 3D 圖形和動畫,Matplotlib 都能勝任。通過與其他庫(如 Seaborn 和 Pandas)的結合,Matplotlib 可以進一步簡化數據可視化的過程,幫助用戶更高效地分析和展示數據。
對于任何從事數據分析、科學研究或工程繪圖的 Python 用戶來說,掌握 Matplotlib 是一項基本且重要的技能。通過不斷實踐和探索,用戶可以充分利用 Matplotlib 的強大功能,創建出高質量、專業級的圖形。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。