
實時航班追蹤背后的技術(shù):在線飛機追蹤器的工作原理
為了更好地理解雙坐標(biāo)軸的應(yīng)用,我們將通過一個實際案例來演示如何在Matplotlib中實現(xiàn)雙坐標(biāo)軸。
假設(shè)我們有一組銷售數(shù)據(jù),其中包含每個月的銷售額和廣告投入。銷售額的單位是萬元,而廣告投入的單位是千元。我們希望在同一張圖中展示銷售額和廣告投入的趨勢,以便分析兩者之間的關(guān)系。
首先,我們需要準(zhǔn)備數(shù)據(jù)。假設(shè)我們有以下數(shù)據(jù):
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繪制雙坐標(biāo)軸圖。具體步驟如下:
twinx()
方法創(chuàng)建第二個Y軸。# 創(chuàng)建圖形和第一個Y軸
fig, ax1 = plt.subplots(figsize=(10, 6))
# 繪制銷售額數(shù)據(jù)
ax1.plot(months, sales, 'b-', label='銷售額 (萬元)')
ax1.set_xlabel('月份')
ax1.set_ylabel('銷售額 (萬元)', color='b')
ax1.tick_params(axis='y', labelcolor='b')
# 創(chuàng)建第二個Y軸
ax2 = ax1.twinx()
# 繪制廣告投入數(shù)據(jù)
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')
# 添加標(biāo)題
plt.title('銷售額與廣告投入趨勢分析')
# 顯示圖形
plt.show()
通過上述代碼,我們成功繪制了一張雙坐標(biāo)軸圖。圖中左側(cè)的Y軸表示銷售額(萬元),右側(cè)的Y軸表示廣告投入(千元)。從圖中可以看出,銷售額和廣告投入都呈現(xiàn)出上升趨勢,且兩者的變化趨勢較為一致。這表明廣告投入的增加可能對銷售額的提升起到了積極作用。
在某些情況下,我們可能需要在多個子圖中使用雙坐標(biāo)軸。Matplotlib提供了靈活的子圖布局功能,可以輕松實現(xiàn)這一需求。
# 創(chuàng)建2x2子圖布局
fig, axs = plt.subplots(2, 2, figsize=(12, 8))
# 在第一個子圖中繪制雙坐標(biāo)軸圖
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')
# 在其他子圖中繪制其他數(shù)據(jù)
# ...
# 顯示圖形
plt.tight_layout()
plt.show()
Matplotlib允許用戶自定義坐標(biāo)軸的樣式,包括顏色、刻度、標(biāo)簽等。通過自定義樣式,可以使雙坐標(biāo)軸圖更加美觀和易讀。
# 創(chuàng)建圖形和第一個Y軸
fig, ax1 = plt.subplots(figsize=(10, 6))
# 繪制銷售額數(shù)據(jù)
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)
# 創(chuàng)建第二個Y軸
ax2 = ax1.twinx()
# 繪制廣告投入數(shù)據(jù)
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')
# 添加標(biāo)題
plt.title('銷售額與廣告投入趨勢分析')
# 顯示圖形
plt.show()
本文詳細(xì)介紹了Matplotlib中雙坐標(biāo)軸的基本概念、實現(xiàn)原理以及實際應(yīng)用。通過實際案例,我們展示了如何在Matplotlib中繪制雙坐標(biāo)軸圖,并探討了多子圖雙坐標(biāo)軸和自定義樣式的進(jìn)階應(yīng)用。雙坐標(biāo)軸技術(shù)在處理不同量級或不同單位的數(shù)據(jù)時具有重要的應(yīng)用價值,能夠幫助我們更清晰地展示數(shù)據(jù)之間的關(guān)系。希望本文能夠幫助讀者更好地理解和應(yīng)用Matplotlib中的雙坐標(biāo)軸技術(shù)。