首页 > 解决方案 > 使用 Matplotlib 直到帧结束的阴影区域

问题描述

使用 Matplotlib,我试图用 N 为区域 y > 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()

结果是这样的:

如何让阴影区域不停止,而是到达帧的末尾?

标签: matplotlib

解决方案


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()

结果图

或者,您可以在调用之前收集限制,然后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))

推荐阅读