Matplotlib SVG保存 - 在contourf级别周围轻轻描绘边框

3
以下代码部分取自matplotlib文档中的等高线演示。我使用contourf替代simple contour来展示等高线图,matplotlib图形窗口内的图表显示得很好。但当保存图片时,PNG格��看起来完美无缺,然而由于png不是矢量格式,所以我没有任何层级信息。当保存为PDF或SVG格式时,会有轻微的细边框环绕在层级周围。起初我以为这些边框是因为每个层级都被描边了。但是,当我用inkscape打开SVG文件去除描边时,发现实际上层级的大小已经被保存得有点太小或者有点太大了...虽然在放大时几乎看不到它们,但缩小后它们就很明显了。我想这可能是因为层级的值被保存时精度比较低造成的吧 !?是否有一些命令可以消除这些边框呢? 我知道在大多数情况下这些边框并不会产生影响,但不幸的是,在我的应用场景中,它们并不仅仅是看起来不美观,而且真的影响了图像质量...
import matplotlib
import numpy as np
import matplotlib.cm as cm
import matplotlib.mlab as mlab
import matplotlib.pyplot as plt

matplotlib.rcParams['xtick.direction'] = 'out'
matplotlib.rcParams['ytick.direction'] = 'out'

delta = 0.025
x = np.arange(-3.0, 3.0, delta)
y = np.arange(-2.0, 2.0, delta)
X, Y = np.meshgrid(x, y)
Z1 = mlab.bivariate_normal(X, Y, 1.0, 1.0, 0.0, 0.0)
Z2 = mlab.bivariate_normal(X, Y, 1.5, 0.5, 1, 1)
Z = 10.0 * (Z2 - Z1)

plt.ion()
plt.figure()
CS = plt.contourf(X, Y, Z, colors=[[0,0,0.5],[0,0,0.2]])
plt.title('Saved as PNG')
plt.savefig('image1.png')

plt.title('Saved as SVG')
plt.savefig('image1.svg')

saved as PNG saved as SVG


请你在 GitHub 上创建一个缺陷报告,内容为以下文本(请复制,因为链接到 Stack Overflow 的可能会失效)? - tacaswell
从未做过这个,这个很简单吗? - cattt84
是的,您需要一个 GitHub 帐户,然后就会有一个明亮的绿色的“新问题”按钮。 - tacaswell
我打算那样做。因此,目前修复SVG的唯一方法很可能是通过使用某些矢量图形工具手动编辑? - cattt84
1个回答

2

我花了很长时间来寻找解决方法。在GitHub问题中,我找到了一个解决方法:

# ... setup code
CS = plt.contourf(X, Y, Z, colors=[[0,0,0.5],[0,0,0.2]])

for a in CS.collections:
    a.set_edgecolor("face")

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接