使用matplotlib导出带透明度的图形
我正在用下面的代码绘制两个相交的透明直方图。当我在iPython中运行代码时,弹出的图像看起来一切正常。
当我把这个图导出为png格式时,也没有问题,但当我导出为eps格式时,透明度消失了,我看不到直方图相交的部分。我希望能以eps格式导出,并保留透明度。希望能得到一些建议。
import numpy
from matplotlib import pyplot as plt
d1 = numpy.random.normal(-0.2, 0.25, 5000)
d2 = numpy.random.normal(0.2, 0.25, 5000)
bins = numpy.linspace(-1,1,30)
fig = plt.figure(1,figsize=(30.0, 15.0))
plt.ion()
plt.hist(d1, bins, alpha=0.5, normed=1)
plt.hist(d2, bins, alpha=0.5, normed=1)
plt.show()
plt.savefig('myfig.eps') # <-- loses transparency
plt.savefig('myfig.png') # <-- preserves transparency
1 个回答
3
你可以在保存图形之前将其转化为像素图,这样可以在eps文件中保留透明效果:
ax.set_rasterized(True)
plt.savefig('rasterized_fig.eps')
想了解更多可能的解决方案,可以查看这里: Matplotlib图形在保存为.ps/.eps时失去透明度