我在使用Python3的MacOS上的Jupyter中运行svg_filter_line(官方示例)。

SVG与许多svg图像(例如,来自Wiki的Worldmap图像)一起使用时效果很好

python - IPython.display : SVG cannot render a svg image generated by svg_filter_line (official example)-LMLPHP

svg_filter_line的原始编码也可以正常工作。

python - IPython.display : SVG cannot render a svg image generated by svg_filter_line (official example)-LMLPHP

运行svg_filter_line会生成一个名为“svg_filter_line.svg”的svg镜像。

SVG无法呈现此svg图像'svg_filter_line.svg',没有错误,没有警告。

python - IPython.display : SVG cannot render a svg image generated by svg_filter_line (official example)-LMLPHP

最佳答案

做到这一点有点困难。解决方案如下:在处理文件时:我发现display()display_svg()函数显示的文件类型彼此之间略有不同(差异主要在 namespace 中)。解决方法是,必须使用svgutils重新保存SVG文件,然后阅读并显示以下内容:

import svgutils.transform as sg
from IPython.display import SVG,display

#create new SVG figure
fig = sg.SVGFigure("16cm", "10cm")

# load matpotlib-generated figures
fig1 = sg.fromfile('svg_filter_line.svg')
plot1 = fig1.getroot()
fig.append([plot1])
fig.save("svg_filter_line2.svg")
display(SVG(filename='svg_filter_line2.svg'))
svgutils可以如下安装:
conda install -c conda-forge svgutils

关于python - IPython.display : SVG cannot render a svg image generated by svg_filter_line (official example),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56514491/

10-09 14:15