[英]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.3
和Matplotlib 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.