我正在尝试使用 Python 和 matplotlib 生成一个 svg 文件。我使用的代码的更简单版本如下:
import matplotlib.pyplot as plt
plt.figure()
plt.fill([0,1,0.5],[0,0,1],color = "r")
plt.fill([1.5,1,0.5],[1,0,1],color = "b")
plt.show()
plt.savefig("soedgesvg.svg")
但是当我在 Inkscape 中打开它时,我得到了一个没有指定颜色的意外重影边缘。这可以在下图中看到:
有没有办法在导出 svg 之前在 Python 中删除这条边?
编辑
根据我的经验,只有在指定颜色时才会发生这种情况。
Inkscape 0.92.3 和 matplotlib 3.1.1
请您参考如下方法:
也可以在调用 plt.fill
时添加 linewidth=0
,如下所示:
plt.fill([0,1,0.5],[0,0,1],color = "r", linewidth=0)
plt.fill([1.5,1,0.5],[1,0,1],color = "b", linewidth=0)
此答案由 @ImportanceOfBeingErnest 提供在评论中有以下解释:
Because the linewidth is defined in points. When you zoom inside matplotlib, the lines always keep their physical size, e.g. 1/72. of an inch. When you zoom in in Inkscape you zoom into the actual figure, up to the point where maybe your screen only shows 1/72. of an inch and hence the line will be as large as the screen.