python - matplotlib svg save - contourf 水平周围的浅色边框

标签 python svg matplotlib save export

以下代码部分摘自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')

saved as PNG saved as 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/

相关文章:

python - 在python中添加两个datetime.datetime.strptime().time()对象

javascript - 如何使用画笔选择D3.js中多个组元素中包含的圆圈?

python - 尝试将列表的索引绘制为直方图时的“TypeError: list indices must be integers, not str”

python - 在 scipy.spatial.Delaunay 附近时遗漏的点

python - 按下时更改 matplotlib 按钮颜色

python - Kivy - 矩形延迟绑定(bind)到图像

python - 用于删除 3 个或更少字符的 block 的正则表达式

python - 将行追加到 NumPy 记录数组

d3.js - 画了一条直线,但它是弯曲的 d3

css - SVG 路径的手绘(蜡笔)风格?