python-pptx与matplotlib修复图像分辨率

时间:2017-11-07 07:19:05

标签: 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')

我收到错误:

cannot identify image file <StringIO.StringIO INstamce at ..>

这甚至是正确的吗? svg应该保持分辨率,但我不能在pptx中读到这个。

2 个答案:

答案 0 :(得分:1)

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

plt.savefig(some_image_stream_in_memory, dpi=1200) 

答案 1 :(得分:1)

不幸的是,PowerPoint不直接支持SVG格式(我听说它是​​MS和Adobe之间的草皮问题)。我希望这可以解释您使用format=svg保存时遇到的错误。

其他人似乎对matplotlib的PNG格式有好运。我认为这是默认的图像格式,但可能值得一试。

我发生的另一件事是我没有看到你指定要从matplotlib保存的图表大小的任何地方。如果它被保存为一个小图像,然后在PowerPoint中显示它时显着扩大,这将产生一个&#34; grainy&#34;外观