下面的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.]
。我需要将 upper y轴限制设置为1。将下限留给m2
中的最小值(即:让python
决定下限)。
在这个特殊的例子中,我可以只使用plt.ylim(min(m2), 1.0)
,但我的实际代码要复杂得多,有很多东西要绘制,所以这样做不是一个真正的选择。
我试过设置:
plt.ylim(top=1.)
以及:
plt.gca().set_ylim(top=1.)
如这里建议的How to set 'auto' for upper limit, but keep a fixed lower limit with matplotlib.pyplot,但这两个命令似乎都不起作用。它们都正确地将y轴的上限设置为1。但它们也强制下限为0。我不想这样
我使用Python 2.7.3
和Matplotlib 1.2.1
。
1条答案
按热度按时间uujelgoq1#
如果问题仅仅是要绘制大量数据,为什么不检索图的y下限并在设置限值时使用它呢?
或类似地用于特定轴。有点丑,但我看不出有什么不好的理由。
问题实际上在于打印前设置限制会禁用自动缩放。默认情况下,x轴和y轴的限值都是
(0.0, 1.0)
,这就是为什么y轴下限保持为0的原因。解决方案是在调用所有绘图命令后设置绘图限制。如果需要,也可以重新启用自动缩放