gpt4 book ai didi

python - 使用 rasterized=True 时,Matplotlib 图(pcolormesh 和 colorbar)相对于它们的轴移动

转载 作者:太空狗 更新时间:2023-10-30 02:21:24 25 4
gpt4 key购买 nike

我使用带有颜色条的 matplotlib pcolormesh 图,对图和颜色条应用光栅化以减小文件大小并将图形保存为 PDF 文件。因此我注意到,在光栅化之后,颜色区域本身相对于轴向上和向左移动了一点,因此在绘图的右下边缘出现了白色条纹。同样的情况也发生在颜色条上,我发现情况更糟:颜色条很薄,白色条纹非常明显且令人不安。有没有办法避免光栅化图的这种行为,并使光栅化区域与光栅化前保持在同一位置?

我尝试使用 rasterization_zorderzorder settings。它对 pcolormesh 图有点帮助(下面的白色条纹消失了),但我发现没有办法将它应用到 colorbar

下面是一个简单的示例,其中包含四个图来说明问题。请放大图表右下角的 PDF 文件以了解我的意思。

    import numpy as np
import matplotlib.pyplot as plt

d = np.arange(100).reshape(10, 10)

myfig = plt.figure(figsize=(5, 5))

'''plot 1, no rasterization'''
ax1 = plt.subplot(221)
plot1 = ax1.pcolormesh(d)
cbar1 = plt.colorbar(plot1)
ax1.set_title("no rasterization", fontsize = 10)

'''plot 2, main plot rasterized, colorbar not'''
ax2 = plt.subplot(222)
plot2 = ax2.pcolormesh(d, rasterized=True)
cbar2 = plt.colorbar(plot2)
ax2.set_title("plot rasterized", fontsize = 10)

'''plot 3, main plot and colorbar rasterized'''
ax3 = plt.subplot(223)
plot3 = ax3.pcolormesh(d, rasterized=True)
cbar3 = plt.colorbar(plot3)
cbar3.solids.set_rasterized(True) # !!!!!!!!
ax3.set_title("plot and cbar rasterized", fontsize = 10)

'''plot 4, whole axes of main plot and colorbar rasterized, attempt to use rasterization_zorder'''
ax4 = plt.subplot(224)
ax4.set_rasterization_zorder(-10)
plot4 = ax4.pcolormesh(d, zorder=-20)
'''colorbarbar gets its own axis'''
from mpl_toolkits.axes_grid1.inset_locator import inset_axes
ax_cbar4 = inset_axes(ax4, width="3%", height="100%", loc=6)
ax_cbar4.set_rasterization_zorder(-10)
locator_ax_cbar4 =ax_cbar4.get_axes_locator()
locator_ax_cbar4.set_bbox_to_anchor ((1.0, 0 , 1, 1), ax4.transAxes)
cbar4=plt.colorbar(plot4, cax=ax_cbar4)

#cbar4.solids.set_rasterization_zorder(-10) # ---> NOT WORKING
cbar4.solids.set_rasterized(True)

ax4.set_title("axes rasterized and zorder changed", fontsize = 10)


plt.savefig("D:/test_rasterization_3plots.pdf", dpi=150)
print 'pdf file saved'

plt.show()

example

任何建议将不胜感激!

最佳答案

这是一个在 1.2.0 和 1.2.1 之间修复的错误(可能是这个:https://github.com/matplotlib/matplotlib/issues/1085,我将跟踪修复问题的提交作为读者的练习;))。

最简单的解决方案是升级到 1.2.1 或更高版本。

关于python - 使用 rasterized=True 时,Matplotlib 图(pcolormesh 和 colorbar)相对于它们的轴移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16460981/

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