使用Matplotlib直至帧末的阴影区域

时间:2020-03-27 13:23:09

标签: matplotlib

使用Matplotlib我正在尝试对区域y> N进行阴影处理,并使用N数。 问题是我无法使阴影区域到达帧的末尾。 这是一个简单的例子。

import matplotlib.pyplot as plt

fig, ax = plt.subplots(1,1)

x = [i for i in range(0,100,10)]

ax.plot(x,x,'-o')

N=110
ylim = max(ax.get_ylim())
ax.axhspan(N,ylim,alpha=.5)

plt.show()

结果是这样的:

如何使阴影区域不停止而是一直到达帧末?

1 个答案:

答案 0 :(得分:1)

ax.autoscale()在这里可以派上用场。默认情况下,每次添加时,matplotlib都会自动调整轴的限制。通常,还会添加一些填充,以在上下(左右)留出一些自由空间。

调用ax.autoscale(enable=True, axis='y', tight=True)会在y轴上更改此行为,从而强制“紧缩”限制,因此无需填充。

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
x = [i for i in range(0, 100, 10)]
ax.plot(x, x, '-o')

N = 110
ylim1 = max(ax.get_ylim())
ax.autoscale(enable=True, axis='y', tight=True)
ax.axhspan(N, ylim1, alpha=.5)

plt.show()

resulting plot

或者,您可以在调用axhspan之前收集限制,然后再手动进行设置:

ax.plot(x, x, '-o')
N = 110
ylim0, ylim1 = ax.get_ylim()
ax.axhspan(N, ylim1, alpha=.5)
ax.set_ylim(ylim0, max(N, ylim1))