以下代码部分摘自matplotlib文档的contour demo。我正在使用 contourf 而不是简单的轮廓。等高线图的显示就像我希望它在 matplotlib 图形窗口中一样。
一谈到节省,我对结果并不满意。 PNG 保存看起来很完美,但我没有任何级别,因为 png si 没有矢量格式。保存为 SVG 格式的 PDF 时,我有级别,但级别周围有细浅的边框。起初我以为它们是造成的,因为每个级别都在中风。当用 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')
最佳答案
我搜索了很长时间来解决这个问题。在 a github issue我找到了解决方法:
# ... 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")
关于python - matplotlib svg save - contourf 水平周围的浅色边框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30188011/