我正在尝试在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行,in 开
引发IOError(“无法识别图像文件”)
IOError:无法识别图像文件
如何使用imshow
光栅化SVG文件以使用matplotlib直接绘制矢量?
感谢。
答案 0 :(得分:0)
我也遇到了同样的问题,但是现在在我的程序包Pylustrator中实现了一个解决方案: https://pylustrator.readthedocs.io/en/latest/composing.html#svg-files
它可以读取和解析svg文件,并创建matplotlib艺术家以在图中显示svg内容。
并非所有的svg功能都可以由matplotlib艺术家模拟,例如不会显示渐变或滤镜,但支持大多数svg功能。