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

vic*_*rsc 6 python svg matplotlib

我正在尝试在 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)
Run Code Online (Sandbox Code Playgroud)

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

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

引发 IOError("无法识别图像文件")

IOError:无法识别图像文件

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

谢谢。

Ran*_*ian 2

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

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

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