Matplotlib在渲染到PDF时不显示阴影填充
我正在尝试在matplotlib中使用填充功能,这个功能在屏幕上显示的时候没问题。但是当我把图保存为pdf格式时,填充的标记却没有显示出来:
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0,2*np.pi,100)
plt.figure()
plt.fill(x,np.sin(x),color='blue',alpha=0.5,hatch='/')
plt.show()
plt.savefig('./test.pdf',format='pdf')
我在OS X 10.6.6上使用的是matplotlib 1.0.1和pylab。这可能是和平台有关的问题,可能跟后端渲染器有关系,但我不太确定。任何建议都非常感谢。
2 个回答
18
总结一下:在导出PDF时,使用 alpha=.99
可以让填充图案正常显示
快到2020年了,使用 plt.bar()
时的问题依然存在。当我们导出为PNG格式时,一切都显示得很好。但是在导出为PDF时,填充图案就出现了问题。有时候填充图案看不见,有时候放大或缩小时能看到(但在不同的电脑上测试时,有时又看不见),这个问题的原因还不太清楚。
我们发现这个问题和 alpha
选项有关。当使用 alpha=.5
时,颜色和填充图案的可见度都是50%。这样一来,填充图案几乎能看见。所以我们决定试试 alpha=.99
,这样一切几乎都能100%显示。
结果成功了!太好了!
在我们的解决方法中,不需要像之前的回答那样重复代码。只需保持颜色选项不变,直接设置 alpha=.99
就可以了。
8
看起来像是个错误。请在GitHub的问题追踪器上提交一个报告。
同时,这里有个临时解决办法:
plt.fill(x,np.sin(x),color='blue',alpha=0.5)
plt.fill(x,np.sin(x),color='None',alpha=0.5,edgecolor='blue',hatch='/')