在 matplotlib 图中绘制 SVG(嵌入在 wxPython 中)

Posted

技术标签:

【中文标题】在 matplotlib 图中绘制 SVG(嵌入在 wxPython 中)【英文标题】:plot SVG within matplotlib figure (embedded in wxPython) 【发布时间】:2012-08-23 02:19:19 【问题描述】:

我正在尝试在 matplotlib 子图中嵌入 SVG 图像。

matplotlib 只能原生读取 PNG,但如果安装了 PIL,它将使用它来加载图像并返回一个数组(如果可能),该数组可以与 imshow() 一起使用。 http://matplotlib.sourceforge.net/api/pyplot_api.html

import Image     
filename = "/tmp/figure.svg"
pil_img = Image.open(filename) # PIL image
img = np.asarray(pil_img) # converting PIL image into numpy array
self.axes.cla()
self.axes.imshow(img)

当然,PIL 不支持 SVG。错误:

文件“/usr/lib/python2.7/dist-packages/PIL/Image.py”,第 1980 行,在 打开

raise IOError("无法识别图片文件")

IOError: 无法识别图像文件

如何栅格化 SVG 文件以使用 imshow 绘制或直接使用 matplotlib 绘制矢量?

谢谢。

【问题讨论】:

相关,但不是答案。 ***.com/questions/3600164/… 还有:***.com/questions/6589358/… 取决于你的 SVG 有多复杂。如果它是一个简单的,您可以尝试使用标准 python xml 库解析它并创建本机 matplotlib 艺术家?可能是相当多的工作......对不起,我真的没有一个很好的答案。 【参考方案1】:

我也遇到了同样的问题,但现在在我的包 pylustrator 中实现了一个解决方案: https://pylustrator.readthedocs.io/en/latest/composing.html#svg-files

它可以读取和解析svg文件并创建matplotlib艺术家以在图中显示svg内容。

并非所有 svg 功能都可以由 matplotlib 艺术家模拟,例如不会显示渐变或滤镜,但支持大多数 svg 功能。

【讨论】:

以上是关于在 matplotlib 图中绘制 SVG(嵌入在 wxPython 中)的主要内容,如果未能解决你的问题,请参考以下文章

如何在嵌入Qt环境的matplotlib中更快地绘制大量信号?

Matplotlib - 在错误的子图中绘制的变量[重复]

Matplotlib - 在错误的子图中绘制的变量[重复]

在 matplotlib 图中绘制平滑曲线

在 PyQt4 的嵌入式 matplotlib 图中使用 ginput

matplotlib如何在子图中正确绘制文本[重复]