在wxPython中嵌入matplotlib图形,绘制SVG图形。

6

我想把SVG图像嵌入到matplotlib子图中。

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行,打开文件时, 抛出异常:“无法识别图像文件”。 如何将SVG文件转换为栅格图以便使用imshow进行绘制?或者如何直接使用matplotlib绘制矢量图形?
谢谢。

请问如何使用Python PIL读取SVG文件? - tacaswell
同时,也请参考此链接:https://dev59.com/omw15IYBdhLWcg3weLoF - tacaswell
取决于你的SVG有多复杂。如果它很简单,你可以尝试使用标准的Python XML库解析它并创建本地Matplotlib图形?尽管可能需要一些工作...... 很抱歉我没有一个好答案。 - pelson
1个回答

2
我也曾经遇到过同样的问题,但现在我在我的pylustrator包中实现了一个解决方案: https://pylustrator.readthedocs.io/en/latest/composing.html#svg-files 它可以读取和解析svg文件,并创建matplotlib艺术家以在图形中显示svg内容。
并非所有的svg特性都能被matplotlib艺术家模拟,所以例如渐变或滤镜将不会被显示,但大多数svg特性都得到了支持。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接