python - 使用非零 alpha 值时, basemap 中的 pcolormesh 上出现奇怪的线条

标签 python matplotlib matplotlib-basemap cartopy

在 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()

输出显示奇怪的行出现:

enter image description here

如果我改为设置 alpha=1 线条消失,行为如预期:

enter image description here

关于如何让 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 以及。

enter image description here

颜色栏中的线条是由 open issue #1188 引起的,据我所知,没有已知的解决方法不涉及手动创建颜色条。

关于python - 使用非零 alpha 值时, basemap 中的 pcolormesh 上出现奇怪的线条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59460026/

相关文章:

javascript - Django:我可以将 "action="和 jQuery 分配给同一个表单吗?

python - matplotlib - 使用 matplotlib 绘制时间序列

python - tkinter 和 matplotlib Canvas 显示,但不显示导航工具栏和图形标题

python - 如何创建 Basemap 实例并使用不同的 "overlays"重用它?

python - 使用 py.test 运行测试套件(任意测试集合)

python - 如何从 unix 时间戳创建 numpy.datetime64 对象并将时区设置为 UTC?

python - mariadb游标参数标记问题

c++ - 如何显示动画情节?

python - 尽管已安装,但未找到 basemap 数据雇用

python - basemap 和 Fiona 不会安装用于处理 iPython 笔记本中的 map 和 shp 文件