Python 如何在matplotlib中更好地光栅化绘图而不模糊标签?
我通常使用Python 如何在matplotlib中更好地光栅化绘图而不模糊标签?,python,matplotlib,transparency,eps,Python,Matplotlib,Transparency,Eps,我通常使用ax.set_rasterized(True)对图形进行光栅化,以便在保存为eps格式时可以处理透明度,但是光栅化也会模糊轴标签和滴答声标签,因此有没有办法只对轴内的面片进行光栅化,而不是对整个图形进行光栅化?还是有更好的方法可以导出具有透明度的eps格式?谢谢。由于matplotlib可以光栅化,因此从Artist()派生的任何类都可以使用关键字光栅化设置为True进行光栅化。因此,您只能光栅化修补程序 我只是尝试了一些组合,似乎效果不错。然而,质量似乎不是很好(另见) 将numpy
ax.set_rasterized(True)
对图形进行光栅化,以便在保存为eps
格式时可以处理透明度,但是光栅化也会模糊轴标签和滴答声标签,因此有没有办法只对轴内的面片进行光栅化,而不是对整个图形进行光栅化?还是有更好的方法可以导出具有透明度的eps格式?谢谢。由于matplotlib可以光栅化,因此从Artist()派生的任何类都可以使用关键字光栅化
设置为True
进行光栅化。因此,您只能光栅化修补程序
我只是尝试了一些组合,似乎效果不错。然而,质量似乎不是很好(另见)
将numpy导入为np
将matplotlib.pyplot作为plt导入
def添加补丁(ax,**kwargs):
如果在kwargs和kwargs中“光栅化”[“光栅化”]:
ax.set_光栅化_zorder(0)
(名词短语arange(1,10),1,2,zorder=-1,**kwargs)之间的最大填充
ax.set_xlim(0,10)
ax.set_ylim(0,3)
如果kwargs中的'alpha'和kwargs['alpha']<1:
txt='此修补程序是透明的!'
其他:
txt='此修补程序不透明!'
text(5,1.5,txt,ha='center',va='center',fontsize=25,zorder=-2,
光栅化=真)
图,轴=plt.子批次(nrows=4,sharex=True)
添加_面片(轴[0],alpha=0.2,光栅化=False)
添加_面片(轴[1],alpha=0.2,光栅化=True)
添加_面片(轴[2],栅格化=假)
添加_面片(轴[3],栅格化=真)
plt.紧_布局()
plt.savefig('rasterized_transparency.eps'))
我将eps
转换为png以在浏览器中显示:
另请参见:。如果指定dpi,结果会更好,这似乎默认为一个相当低的值。例如,将最后一行更改为
plt.savefig('rasterized_transparency.eps',dpi=200)
该文件将增长到4.5米,在Acrobat中放大200%看起来很好。不过,我同意可能有更紧凑的格式支持透明性。我刚刚发现了set_zorder和set_光栅化_zorder,我认为它们会有帮助,但仍在挖掘文档,仍然非常感谢任何帮助。您不能使用
pdf
?它可以在没有光栅化的情况下保持透明度。@Avaris很遗憾,我不能使用pdf,但必须坚持使用eps,所以光栅化似乎是唯一的出路。啊,是的。看起来set\u rasterization\u zorder
是一个不错的选择。检查。@Avaris仍然无法使其工作,我要栅格化的对象是一个ax。fill_between()对象和“zorder”技巧神秘地将对象移到轴外,很奇怪。谢谢,我将尝试您的示例,并尽快在我自己的代码上进行测试。届时答案将被接受;-)。
plt.savefig('rasterized_transparency.eps',dpi=200)