matplotlib 只固定一个轴限制,将其他设置为自动

piwo6bdm  于 2023-05-23  发布在  其他
关注(0)|答案(1)|浏览(213)

下面的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.3Matplotlib 1.2.1

uujelgoq

uujelgoq1#

如果问题仅仅是要绘制大量数据,为什么不检索图的y下限并在设置限值时使用它呢?

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

或类似地用于特定轴。有点丑,但我看不出有什么不好的理由。
问题实际上在于打印前设置限制会禁用自动缩放。默认情况下,x轴和y轴的限值都是(0.0, 1.0),这就是为什么y轴下限保持为0的原因。
解决方案是在调用所有绘图命令后设置绘图限制。如果需要,也可以重新启用自动缩放

相关问题