我正在尝试使用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中读到这个。
答案 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;外观