【问题标题】:specify non-transparent color for missing data in Cartopy map为 Cartopy 地图中的缺失数据指定不透明颜色
【发布时间】:2020-02-20 16:27:13
【问题描述】:

在使用 Cartopy 和 matplotlib 的 pcolormesh 制作地图时,我无法为缺失值指定颜色。我想让所有的“nan”值都变成灰色而不是白色/透明。为此,我尝试使用 matplotlib 颜色图的 set_bad 方法,但这似乎破坏了 Cartopy。该问题触发了 Cartopy 的 UserWarning,但我不知道解决方法是什么。

这是一个甚至没有 nan 值但显示问题的示例:

import xarray as xr
import numpy as np
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
import matplotlib as mpl
import cartopy
import sys
print(f"PYTHON: {sys.version}")  # PYTHON: 3.8.1 | packaged by conda-forge | (default, Jan 29 2020, 15:06:10) [Clang 9.0.1 ]
print(f" xarray {xr.__version__}")  # xarray 0.14.1
print(f" numpy {np.__version__}")  # numpy 1.17.3
print(f" matplotlib {mpl.__version__}")  # matplotlib 3.1.2
print(f" cartopy {cartopy.__version__}")  # cartopy 0.17.0

# construct fake data:
sig = np.sin(np.radians(np.linspace(-90, 90, 192)))
sig = np.tile(sig, [288,1]).T
darr = xr.DataArray(sig, dims=("lat", "lon"), coords={"lat":np.linspace(-90, 90, 192), "lon":np.linspace(0,360,288)})
# darr.plot.pcolormesh()  # Looks fine.

# fig, ax = plt.subplots(subplot_kw={"projection":ccrs.PlateCarree()})
# lons, lats = np.meshgrid(darr['lon'], darr['lat'])
# ax.pcolormesh(lons, lats, darr, transform=ccrs.PlateCarree())  # Looks fine.

cm = plt.get_cmap("viridis")
cm.set_bad("gray")

fig, ax = plt.subplots(subplot_kw={"projection":ccrs.PlateCarree()})
lons, lats = np.meshgrid(darr['lon'], darr['lat'])
ax.pcolormesh(lons, lats, darr, transform=ccrs.PlateCarree())  # Right side of map is gray / userwarning triggered

用户警告是:“用户警告:颜色图的‘坏’已设置,但为了将 pcolormesh 包裹在地图上,它必须是完全透明的。”

所以警告很清楚,结果是一半数据被遮挡的地图。我的问题是如何解决 Cartopy 的这个限制?

【问题讨论】:

  • cm.set_bad( "gray", alpha=0 ) 试试有问题的代码行,alpha 参数应该可以解决你的问题。
  • @swatchai -- 这完全有效!谢谢你。如果您作为答案发布,我很乐意接受。
  • 很高兴听到这个消息。

标签: matplotlib cartopy


【解决方案1】:

试试有问题的代码行

cm.set_bad("gray")

cm.set_bad( "gray", alpha=0 )

表示“完全透明”的 alpha 参数应该可以解决您的问题。

【讨论】:

    猜你喜欢
    • 2020-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-26
    • 1970-01-01
    • 1970-01-01
    • 2016-05-27
    • 2012-05-07
    相关资源
    最近更新 更多