簡體   English   中英

matplotlib.pyplot - 僅修復一個軸限制,將另一個設置為auto

[英]matplotlib.pyplot - fix only one axis limit, set other to auto

以下MWE生成一個簡單的散點圖:

import numpy as np
import matplotlib.pyplot as plt

# Generate some random two-dimensional data:
m1 = np.random.normal(size=100)
m2 = np.random.normal(scale=0.5, size=100)

# Plot data with 1.0 max limit in y.
plt.figure()
# Set x axis limit.
plt.xlim(0., 1.0)
# Plot points.
plt.scatter(m1, m2)
# Show.
plt.show()

在此圖中,x軸限制設置為[0., 1.] 我需要 Y軸限值設置為1離開下限到任何在最小值m2是(即:讓python決定的下限值)。

在這種特殊情況下,我可以使用plt.ylim(min(m2), 1.0)但是我的實際代碼要復雜得多,因為要繪制很多東西,所以這樣做並不是一個真正的選擇。

我試過設置:

plt.ylim(top=1.)

並且:

plt.gca().set_ylim(top=1.)

在這里建議如何設置'auto'作為上限,但使用matplotlib.pyplot保持固定的下限 ,但兩個命令似乎都不起作用。 它們都正確地將y軸的上限設置為1.但它們也強制下限為0.這是我不想要的。

我正在使用Python 2.7.3Matplotlib 1.2.1

如果關注的只是繪制了大量數據,為什么不檢索圖的較低y限制並在設置限制時使用它?

plt.ylim(plt.ylim()[0], 1.0)

或類似地針對特定軸。 有點難看,但我認為沒有理由不應該工作。


問題實際上在於,在繪圖之前設置限制會禁用自動縮放。 默認情況下,x軸和y軸的限制均為(0.0, 1.0) ,這就是y下限保持為0的原因。

解決方案是在調用所有繪圖命令后設置繪圖限制。 或者,如果需要,您可以重新啟用自動縮放

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM