如何将 matplotlib 生成的多个图发送到 pptx 而没有任何重叠?

How to send multiple plots generated by matplotlib to a pptx without any overlapping?

我正在做一个项目,我正在使用 Python 中的 matplotlib 模块生成数百个图。我想使用 python-pptx 模块将这些图放在 pptx 中,假设一张幻灯片上有四个图,而不将这些图存储在本地磁盘上。 为了克服存储问题,我使用了 BytesIO python 模块,它将绘图存储在缓冲区内,然后将这些绘图发送到 pptx。 我面临的主要问题是情节重叠。

问题是如何将这些图连续发送到pptx,这样我们就可以避免重叠?

pptx 生成的屏幕截图

我添加了 pptx 的屏幕截图,我试图在其中添加两个图 情节 1(年龄与姓名), 地块 2(身高与姓名), 但是,如果您看到 Plot 2,则表明 plot 1 和 plot 2 的数据重叠了。我想避免这种重叠。

您需要清除每个绘图之间的轴,有几种方法可以做到这一点:

  • plt.clf():清除当前图形
  • plt.cla():清除当前轴

所以而不是例如

plt.scatter(x, y1)
# save first plot
plt.scatter(x, y2)
# save second plot

你会

plt.scatter(x, y1)
# save first plot
plt.clf()
plt.scatter(x, y2)
# save second plot

并且两个散点图会分开绘制。这可能是解决此问题的最 'blunt' 方法,但它应该工作得很好。对于任何特定情况,这绝不是最好的方法。

当调用 plt.show() 时,该数字也会被清除 - 但我认为在这种情况下这是不可取的。