
實時航班追蹤背后的技術:在線飛機追蹤器的工作原理
為了更好地理解雙坐標軸的應用,我們將通過一個實際案例來演示如何在Matplotlib中實現雙坐標軸。
假設我們有一組銷售數據,其中包含每個月的銷售額和廣告投入。銷售額的單位是萬元,而廣告投入的單位是千元。我們希望在同一張圖中展示銷售額和廣告投入的趨勢,以便分析兩者之間的關系。
首先,我們需要準備數據。假設我們有以下數據:
import matplotlib.pyplot as plt
import numpy as np
# 月份
months = np.arange(1, 13)
# 銷售額(萬元)
sales = np.array([20, 22, 25, 27, 30, 32, 35, 37, 40, 42, 45, 50])
# 廣告投入(千元)
ad_cost = np.array([15, 18, 20, 22, 25, 28, 30, 32, 35, 38, 40, 45])
接下來,我們將使用Matplotlib繪制雙坐標軸圖。具體步驟如下:
twinx()
方法創建第二個Y軸。# 創建圖形和第一個Y軸
fig, ax1 = plt.subplots(figsize=(10, 6))
# 繪制銷售額數據
ax1.plot(months, sales, 'b-', label='銷售額 (萬元)')
ax1.set_xlabel('月份')
ax1.set_ylabel('銷售額 (萬元)', color='b')
ax1.tick_params(axis='y', labelcolor='b')
# 創建第二個Y軸
ax2 = ax1.twinx()
# 繪制廣告投入數據
ax2.plot(months, ad_cost, 'r-', label='廣告投入 (千元)')
ax2.set_ylabel('廣告投入 (千元)', color='r')
ax2.tick_params(axis='y', labelcolor='r')
# 添加圖例
lines1, labels1 = ax1.get_legend_handles_labels()
lines2, labels2 = ax2.get_legend_handles_labels()
ax1.legend(lines1 + lines2, labels1 + labels2, loc='upper left')
# 添加標題
plt.title('銷售額與廣告投入趨勢分析')
# 顯示圖形
plt.show()
通過上述代碼,我們成功繪制了一張雙坐標軸圖。圖中左側的Y軸表示銷售額(萬元),右側的Y軸表示廣告投入(千元)。從圖中可以看出,銷售額和廣告投入都呈現出上升趨勢,且兩者的變化趨勢較為一致。這表明廣告投入的增加可能對銷售額的提升起到了積極作用。
在某些情況下,我們可能需要在多個子圖中使用雙坐標軸。Matplotlib提供了靈活的子圖布局功能,可以輕松實現這一需求。
# 創建2x2子圖布局
fig, axs = plt.subplots(2, 2, figsize=(12, 8))
# 在第一個子圖中繪制雙坐標軸圖
ax1 = axs[0, 0]
ax1.plot(months, sales, 'b-', label='銷售額 (萬元)')
ax1.set_ylabel('銷售額 (萬元)', color='b')
ax1.tick_params(axis='y', labelcolor='b')
ax2 = ax1.twinx()
ax2.plot(months, ad_cost, 'r-', label='廣告投入 (千元)')
ax2.set_ylabel('廣告投入 (千元)', color='r')
ax2.tick_params(axis='y', labelcolor='r')
ax1.legend(loc='upper left')
ax2.legend(loc='upper right')
# 在其他子圖中繪制其他數據
# ...
# 顯示圖形
plt.tight_layout()
plt.show()
Matplotlib允許用戶自定義坐標軸的樣式,包括顏色、刻度、標簽等。通過自定義樣式,可以使雙坐標軸圖更加美觀和易讀。
# 創建圖形和第一個Y軸
fig, ax1 = plt.subplots(figsize=(10, 6))
# 繪制銷售額數據
ax1.plot(months, sales, 'b-', label='銷售額 (萬元)')
ax1.set_xlabel('月份')
ax1.set_ylabel('銷售額 (萬元)', color='b')
ax1.tick_params(axis='y', labelcolor='b')
ax1.grid(True, linestyle='--', alpha=0.6)
# 創建第二個Y軸
ax2 = ax1.twinx()
# 繪制廣告投入數據
ax2.plot(months, ad_cost, 'r-', label='廣告投入 (千元)')
ax2.set_ylabel('廣告投入 (千元)', color='r')
ax2.tick_params(axis='y', labelcolor='r')
# 添加圖例
lines1, labels1 = ax1.get_legend_handles_labels()
lines2, labels2 = ax2.get_legend_handles_labels()
ax1.legend(lines1 + lines2, labels1 + labels2, loc='upper left')
# 添加標題
plt.title('銷售額與廣告投入趨勢分析')
# 顯示圖形
plt.show()
本文詳細介紹了Matplotlib中雙坐標軸的基本概念、實現原理以及實際應用。通過實際案例,我們展示了如何在Matplotlib中繪制雙坐標軸圖,并探討了多子圖雙坐標軸和自定義樣式的進階應用。雙坐標軸技術在處理不同量級或不同單位的數據時具有重要的應用價值,能夠幫助我們更清晰地展示數據之間的關系。希望本文能夠幫助讀者更好地理解和應用Matplotlib中的雙坐標軸技術。