具有matplotlib修复图像分辨率的python pptx

具有matplotlib修复图像分辨率的python pptx,matplotlib,python-pptx,Matplotlib,Python Pptx,我正在尝试使用matplotlib生成一个图形,并将其保存到python pptx。一切正常,但导入到pptx时图像分辨率较低。(我只是使用StringIO保存到内存,然后在pptx中使用add_picture()添加图像) 当我这样做时: some_image_in_memory = StringIO() plt.savefig(some_image_in_memory) plt.savefig(some_image_in_memory, format='svg') 它工作正常,但提供低分

我正在尝试使用matplotlib生成一个图形,并将其保存到python pptx。一切正常,但导入到pptx时图像分辨率较低。(我只是使用
StringIO
保存到内存,然后在pptx中使用
add_picture()
添加图像)

当我这样做时:

some_image_in_memory = StringIO()
plt.savefig(some_image_in_memory)
plt.savefig(some_image_in_memory, format='svg')
它工作正常,但提供低分辨率图像,但当我这样做时:

some_image_in_memory = StringIO()
plt.savefig(some_image_in_memory)
plt.savefig(some_image_in_memory, format='svg')
我得到一个错误:

cannot identify image file <StringIO.StringIO INstamce at ..>
无法识别图像文件

这是正确的吗?svg应该保持分辨率,但我无法在pptx中阅读此内容。

我通过将
dpi
值设置为
savefig()
来解决此问题: 前


不幸的是,PowerPoint不直接支持SVG格式(我听说这是微软和Adobe之间的地盘问题)。我希望这可以解释使用
format=svg
保存时出现的错误

其他人似乎对matplotlib中的PNG格式很感兴趣。我想这是默认的图像格式,但可能值得一看


我想到的另一件事是,我看不到您在任何地方指定了要从matplotlib保存的图形的大小。如果将其保存为小图像,然后在PowerPoint中显示时将其缩放得更大,则会产生“颗粒状”外观。

从office 2019开始,支持SVG图像。导出到SVG也是如此。对SVG的支持仍然具有挑战性,因为PowerPoint还存储了一个Windows元文件(WMF)格式的图像,以及PowerPoint早期版本的备份,而且据我所知,Python中没有任何资源可以从SVG可靠地生成WMF文件。因此,可能会添加有限的支持,但您的SVG图像只会显示给使用最新PowerPoint的用户,而且一般来说,用户在MS Office版本中似乎落后;比如说,2007年和2013年还有很多。