在 basemap 投影(或 cartopy 投影)上使用 pcolormesh 绘制数据时,我注意到当我将 alpha 值设置为小于 1 时会出现奇怪的线条。
示例代码:
from mpl_toolkits.basemap import Basemap
import numpy as np
import matplotlib.pyplot as plt
plt.clf()
dpp =1 # degrees per pixel
lons = np.arange(-180,180+dpp,dpp)
lats = -1*np.arange(-90,90+dpp,dpp)
m = Basemap(projection='robin',lon_0=0)
data = np.random.random((np.size(lats), np.size(lons)))
lons, lats = np.meshgrid(lons, lats)
x, y = m(lons, lats)
im = m.pcolormesh(x, y, x, latlon=False, cmap='RdBu')
#im = m.pcolormesh(lons, lats, data, latlon=True, cmap='RdBu')
m.colorbar(im)
plt.show()
输出显示奇怪的行出现:
如果我改为设置 alpha=1 线条消失,行为如预期:
关于如何让 pcolormesh 使用非零 alpha 值的任何想法?
最佳答案
使用 pcolor
而不是 pcolormesh
,它有点慢,但它在处理光栅化输出方面做得更好。一定要设置snap = True
,这将使网格与像素对齐。
例子
import numpy as np
import matplotlib.pyplot as plt
lons, lats = np.meshgrid(np.arange(-180,180), np.arange(90,-90,-1))
im = plt.pcolor(lons, lats, lons, cmap='RdBu', alpha=0.5, snap=True)
cbar = plt.colorbar(im)
cbar.set_alpha(0.5)
plt.show()
这应该适用于
mpl_toolkits.basemap
以及。颜色栏中的线条是由 open issue #1188 引起的,据我所知,没有已知的解决方法不涉及手动创建颜色条。
关于python - 使用非零 alpha 值时, basemap 中的 pcolormesh 上出现奇怪的线条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59460026/