matplotlib 在保持比例的情况下沿x轴沿着剪切图形

s4chpxco  于 2023-10-24  发布在  其他
关注(0)|答案(1)|浏览(137)

我需要能够比较显示多个变量随时间推移的进展的图表。我需要针对不同的情况进行比较,其中所涵盖的时间并不总是相同:现在可视化的数据涵盖5秒长,然后是10秒,然后是30秒,等等。
问题是Matplotlib使用秒数作为指导来确定图的长度-这意味着仅覆盖5秒的图将具有与覆盖30秒的图相同的长度。参见以下两个示例(注意:这些是单独的图,而不是同一图的子图):

documentation for xlim中,我读到我可以用它来关闭自动缩放,我成功地做到了。上面的图现在看起来像这样:

这样好多了
现在是否也可以在5秒后切断图形,这样我就不会在最后留下所有的空白空间?像这样(注意:我用图形程序伪造了这个例子,它有点太小了;它应该是上面那个的1/6大小):

6yoyoihd

6yoyoihd1#

你可以使用GridSpec示例来实现,有多种方法可以实现你想要的效果;这里我将使用2行2列,并使用width_ratios kwarg来控制第二个子图的大小。

import matplotlib.pyplot as plt

fig = plt.figure()

gs = fig.add_gridspec(nrows=2, ncols=2, width_ratios=(1, 5), wspace=0)

ax1 = fig.add_subplot(gs[0, :])
ax2 = fig.add_subplot(gs[1, 0])

ax1.set_xlim(0, 30)
ax2.set_xlim(0, 5)

plt.show()

或者,您可以定义6列,宽度比相等,然后您可以在沿x轴沿着的任何位置添加子图:

import matplotlib.pyplot as pet

fig = plt.figure()

gs = fig.add_gridspec(nrows=4, ncols=6, wspace=0, hspace=0.35)

ax1 = fig.add_subplot(gs[0, :])
ax2 = fig.add_subplot(gs[1, 0])
ax3 = fig.add_subplot(gs[2, 3])
ax4 = fig.add_subplot(gs[3, 2:5])

ax1.set_xlim(0, 30)
ax2.set_xlim(0, 5)
ax3.set_xlim(15, 20)
ax4.set_xlim(10, 25)

plt.show()

相关问题