2012-02-23 63 views
2

我最近發現了函數subplots,這似乎是一種比subplot更加優雅的設置多個subplots的方法。但是,我似乎無法爲每個子圖更改座標軸的屬性。ylabel使用matplotlib中的函數subplots

import matplotlib.pyplot as plt 
import matplotlib as mpl 
import numpy as npx = np.linspace(0, 20, 100) 

fig, axes = plt.subplots(nrows=2) 

for i in range(10): 
    axes[0].plot(x, i * (x - 10)**2) 
    plt.ylabel('plot 1') 

for i in range(10): 
    axes[1].plot(x, i * np.cos(x)) 
    plt.ylabel('plot 2') 

plt.show() 

只顯示最後一幅圖的ylabel。 xlabel,xlim和ylim也是如此。

我意識到使用子圖的重點是創建子圖的常見佈局,但是如果sharex和sharey設置爲false,那麼我是否應該能夠更改某些參數?

解決方法之一是使用子圖函數,但是我需要這樣做嗎?

+0

您可能想將您的'plt.ylabel'調用移動到循環之外。它們都是一樣的,只需要在每個子區域調用一次。 – Yann 2012-02-23 15:13:30

回答

2

是的可能想要使用單獨的子圖實例。

正如您發現的那樣,plt.ylabel設置了最後一個活動繪圖的ylabel。要更改個人Axes的參數,即子圖,可以使用any one of the available methods。要更改ylabel,您可以使用axes[0].set_ylabel('plot 1')

pyplot,或者你定義它plt,是快速訪問AxesFigure方法,而無需對這些對象存儲在變量的輔助模塊。正如documentation states

[Pyplot p]提供了一個類似MATLAB的繪圖框架。

您仍然可以使用此界面,但您需要調整Axes是當前活動的Axes。爲此,pyplot有一個axes(h)方法,其中hAxes的一個實例。所以在你的例子中,你可以調用plt.axes(axes[0])設置第一個子圖活動,然後plt.axes(axes[1])設置另一個。

相關問題