1
具有不同範圍的兩個變量將被繪製在它們自己的子圖中,但是它們的子圖共享它們的y軸,所以只有一個y軸範圍。 y軸範圍應該取決於哪個變量進入哪個子圖?matplotlib:共享軸上的繪圖順序是否應該影響軸限制?
例如,假設
x = np.linspace(-100, 100, 1000)
當
y1 = 5e0 * np.sin(x/5) + 7
y2 = 2e0 * np.sin(x/5) + 7
,它似乎並不重要,其副區需要哪個變量。
fig, axs = plt.subplots(nrows=1, ncols=2, figsize=(15, 4))
axs[0].plot(x, y1)
axs[1].plot(x, y2)
axs[0].get_shared_y_axes().join(*axs)
all([ax.set_yscale('log') == None for ax in axs])
和
fig, axs = plt.subplots(nrows=1, ncols=2, figsize=(15, 4))
axs[0].plot(x, y2)
axs[1].plot(x, y1)
axs[0].get_shared_y_axes().join(*axs)
all([ax.set_yscale('log') == None for ax in axs])
給予相同的公共y軸範圍。
但是,當
y1 = 5e5 * np.sin(x/5) + 5.5e5
y2 = 2e5 * np.sin(x/5) + 5.5e5
,不是這種情況,並且看來該共同y軸範圍是由在最後副區的變量的範圍內確定。這意味着,如果最後一個子圖中的變量的範圍小於第一個子圖中的變量,則第一個子圖中的變量將裁剪掉一部分。
預計這種行爲?因爲這意味着最大範圍的變量總是需要最後繪製以全面覆蓋所有變量。
用matplotlib 2.0.0按預期工作。這裏沒有裁剪線條。 – Goyo