在 SVG 文件中跨边界绘制的绘图线

plot line drawn across boundaries in svg file

提问人:Martin 提问时间:11/15/2023 最后编辑:Trenton McKinneyMartin 更新时间:11/16/2023 访问量:55

问:

我将图像另存为 .svg 文件,并且绘图在画布边界之外。png 文件不会发生这种情况。下面是代码。有谁知道原因吗?我当然可以通过截断数据来修复它,但它很麻烦。(不幸的是,svg文件不允许在这里上传?所以我上传了输出的屏幕截图作为 png)

%matplotlib qt
fig, ax = plt.subplots(constrained_layout=True)
xmin,xmax= 350,800
# ############################################################################################################
x = np.arange(200,900,1)
y = np.random.rand(len(x))
ax.plot(x,y,label="noise")
#############################################################################################################
leg = ax.legend(loc="upper right")
ax.set_ylim(-0.02,2)
ax.set_xlim(xmin,xmax)
plt.show()

enter image description here

我希望ax.set_xlim(xmin,xmax)将是绘制的边界,无论绘图保存为哪种文件类型。

旁注:我使用 svg 的原因是我想有一个基于矢量的图形来与 Impress |LibreOffice的。Id 也使用 Powerpoint,但它似乎不适用于基于矢量的图形?也许我应该使用不同的文件类型?

python matplotlib svg 绘图 保存

评论

1赞 Paul Brodersen 11/15/2023
如果您在其他程序(例如inkscape)中打开图像,数据是否也不会被剪裁?

答:

0赞 lastchance 11/15/2023 #1

将 plot 语句更改为

ax.plot(x,y,label="noise",clip_on=True)

评论

0赞 Martin 11/15/2023
仍然不起作用。至少对我来说是这样。但也许这也与 LibreOffice Impress 有关......当我在浏览器中打开它时,它很好。
1赞 lastchance 11/15/2023
实际上,我无法重现您原来的问题。png 和 svg 文件保存类型都可以正常工作,它们当然可以正确导入到 Word 和 Powerpoint 中。
0赞 Martin 11/15/2023
真正的PowerPoint作品..LibreOffice Impress 导致问题。谢谢。