Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在matplotlib中更好地光栅化绘图而不模糊标签?_Python_Matplotlib_Transparency_Eps - Fatal编程技术网

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)