Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使matplotlib导出无笔划的图形svg_Python_Matplotlib_Svg - Fatal编程技术网

Python 使matplotlib导出无笔划的图形svg

Python 使matplotlib导出无笔划的图形svg,python,matplotlib,svg,Python,Matplotlib,Svg,我试图用Python和matplotlib生成一个svg文件。我使用的代码的更简单版本如下: 导入matplotlib.pyplot作为plt plt.图() 部分填充([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(“soedgessvg.svg”) 到目前为止,结果如预期: 但是当我在Inkscape中打开它时,我会得到一个意外的没有指定颜色的鬼影边缘。

我试图用Python和matplotlib生成一个svg文件。我使用的代码的更简单版本如下:

导入matplotlib.pyplot作为plt
plt.图()
部分填充([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(“soedgessvg.svg”)
到目前为止,结果如预期:

但是当我在Inkscape中打开它时,我会得到一个意外的没有指定颜色的鬼影边缘。这可以在下图中看到:

在导出svg之前,有没有办法在Python中删除此边缘

编辑 仅当根据我的经验指定颜色时,才会发生这种情况


Inkscape 0.92.3和matplotlib 3.1.1的方法是在调用
plt时添加
linewidth=0
。填充如下:

plt.fill([0,1,0.5],[0,0,1],color=“r”,线宽=0)
plt.fill([1.5,1,0.5],[1,0,1],color=“b”,线宽=0)
该答案已在评论中提供,并有以下解释:


因为线宽是以点为单位定义的。在matplotlib内部缩放时,线始终保持其物理大小,例如1/72。一英寸。当您放大Inkscape时,您会放大实际的图形,直到您的屏幕可能只显示1/72。一英寸,因此线条将与屏幕一样大


当我运行这段代码并用inkscape打开它时,它看起来像。这是matplotlib 3.1.0和inkscape 0.91的一部分。也许你想分享你的版本?你能放大两个三角形相交的点吗?我将用版本更新问题。啊,好的,使用
linewidth=0
。这很有效,谢谢你,我没有想到。但为什么在matplotlib中不显示的行在inkscape中显示?你能把这个贴出来作为答案吗?这样我就可以接受这个问题的答案了?因为线宽是用点来定义的。在matplotlib内部缩放时,线始终保持其物理大小,例如1/72。一英寸。当您放大Inkscape时,您会放大实际的图形,直到您的屏幕可能只显示1/72。一英寸,因此线条将与屏幕一样大。