三、Matplotlib雙坐標軸的實操案例

為了更好地理解雙坐標軸的應用,我們將通過一個實際案例來演示如何在Matplotlib中實現雙坐標軸。

3.1 案例背景

假設我們有一組銷售數據,其中包含每個月的銷售額和廣告投入。銷售額的單位是萬元,而廣告投入的單位是千元。我們希望在同一張圖中展示銷售額和廣告投入的趨勢,以便分析兩者之間的關系。

3.2 數據準備

首先,我們需要準備數據。假設我們有以下數據:

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])

3.3 繪制雙坐標軸圖

接下來,我們將使用Matplotlib繪制雙坐標軸圖。具體步驟如下:

  1. 創建圖形和第一個Y軸。
  2. 使用twinx()方法創建第二個Y軸。
  3. 分別繪制銷售額和廣告投入的數據。
  4. 添加圖例、標題等元素。
# 創建圖形和第一個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()

3.4 結果分析

通過上述代碼,我們成功繪制了一張雙坐標軸圖。圖中左側的Y軸表示銷售額(萬元),右側的Y軸表示廣告投入(千元)。從圖中可以看出,銷售額和廣告投入都呈現出上升趨勢,且兩者的變化趨勢較為一致。這表明廣告投入的增加可能對銷售額的提升起到了積極作用。

四、雙坐標軸的進階應用

4.1 多子圖雙坐標軸

在某些情況下,我們可能需要在多個子圖中使用雙坐標軸。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()

4.2 自定義雙坐標軸樣式

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中的雙坐標軸技術。

上一篇:

查看已安裝的 JPOM 版本:深入解析與實操指南

下一篇:

探索boto3 client:AWS服務交互的低級接口
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數據驅動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內容創意新穎性、情感共鳴力、商業轉化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費