如何在Matplotlib中限制y轴的高度?

4

如何在matplotlib图形中限制y轴的高度?我想要同时显示x轴,并缩小这个1D图形的高度。

我尝试过设置ticks、figure sizes、tight_layout、margin等,但都没有成功。

此外,改变ylimits只会跨越整个图形的高度,无论我选择什么限制。

import numpy as np
import matplotlib.pyplot as plot
from matplotlib import rcParams

x = np.array([3500])
y = np.array([0])

rcParams['toolbar'] = 'None'

plot.figure(num=None, figsize=(4, 1), dpi=80, facecolor='w')
plot.axes(frameon=False)
plot.yticks([0])
plot.xlim(0, 6000)
plot.ylim(-0.1, 0.1)
plot.plot(x, y, 'x', markersize=10)

plot.show()

当前图像:

当前图像

期望图像:

期望图像

3个回答

9

试试这个:

plot.ylim(lower_limit, upper_limit)

其中lower_limit是您想要设置的y轴底部的值,upper_limit是顶部的值。

np.random.seed(0)
x = np.random.randn(100)
y = np.random.randn(100)

plot.figure(num=None, figsize=(4, 1), dpi=80, facecolor='w')
plot.axes(frameon=False)
plot.ylim(-10, 10)
plot.plot(x, y, '.')

enter image description here


我尝试过了,但无论使用什么限制,它仍然填充图形。由于这只是一个一维图,我希望高度缩小。 - vaderade

3
问题中的代码已经能够产生所需的结果,只需在末尾添加plot.tight_layout()即可。

enter image description here

当然,如果进一步减小图形的尺寸,图形也会变得更小。例如:figsize=(4, 0.7)

enter image description here


0
仅仅将 figsize 更改为(4,0.3),我得到了与您期望的输出大致相似的结果(除了顶部也有刻度线,但这些也可以被移除):

Output


你在用Windows吗?当我在Windows上运行时,它仍然会切掉底部轴标记。 - vaderade
是的,那是在Windows上。如果您将figsize设置为(5, 0.5)并使用plot.gcf().subplots_adjust(bottom=0.5)会怎样呢? - fuglede
这正是我在寻找的。谢谢! - vaderade

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接