gpt4 book ai didi

python - 为什么 matplotlib fill_between 只在 PDF 上绘制边缘线?

转载 作者:太空狗 更新时间:2023-10-29 18:04:55 26 4
gpt4 key购买 nike

在 python 的 matplotlib.fill_between 中,下面的最小工作示例正确绘制到屏幕和 .png。然而,在生成的 .pdf 中,仍然绘制了边缘线。我该如何解决这个问题?

from numpy import *
import pylab as plt

# Sample data
X = linspace(0,2*pi,1000)
Y0 = sin(X)
Y1 = sin(X+.2)
Y2 = sin(X+.4)

# fill_kwargs (what am I missing?)
fbk = {'lw':0.0, 'edgecolor':None}

ax = plt.subplot(111)
ax.fill_between(X, 0, Y0 , facecolor = 'b', **fbk)
ax.fill_between(X, Y0, Y1, facecolor = 'g', **fbk)
ax.fill_between(X, Y1, Y2, facecolor = 'r', **fbk)
plt.xlim(pi-.8,pi+.5)
plt.ylim(-.5,.5)

plt.savefig('fA.png') # No edge lines
plt.savefig('fA.pdf') # Edge lines!

PNG 结果

enter image description here

PDF 结果

enter image description here

虽然这看起来微不足道,但当您堆叠 200 个 fill_between 绘图时,它会变得非常有问题,您看到的只是一团丑陋的黑色!

最佳答案

它并不完美,但我找到了解决方案(如果有更好的解决方案,我会接受)。 Apparently后记可能是罪魁祸首:

... note that interpreting a linewidth of zero as a 1 pixel wide line is what PostScript does. So the only way to get a true zero width for PostScript output is to fill the polygon without stroking it.

解决办法是让edgecolor和facecolor一样。这可行,但如果面色具有透明度,则边缘颜色似乎不会获得相同的透明度值。

关于python - 为什么 matplotlib fill_between 只在 PDF 上绘制边缘线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14143092/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com