我想rainbow在图像中使用色彩映射imshow.它工作得很好,但我想重新定义价值的颜色0.我想用白色而不是暴力.
我想只为零值执行此操作,所有其他值可以保留在colormap中的默认值.
任何想法如何做到这一点,而无需手动编辑色彩映射?
我正在尝试创建带有离散色条的pcolormesh图。输出应满足以下条件:
我快到了,但是'extend'关键字的行为不符合我的期望(“ max-arrow”中的颜色与上一级的颜色相同-参见示例)。如何将“ vmax”以上的值设置为单独的颜色(即,我使用的任何颜色图的最后一种颜色)
import numpy as np
import xarray as xr
import matplotlib as mpl
import matplotlib.pyplot as plt
ds = xr.Dataset(
coords={'lon': np.arange(-180, 180, 10),
'lat': np.arange(-85, 90, 10)},
data_vars={'data': (('lat', 'lon'), np.random.rand(18, 36))})
cmap = plt.cm.get_cmap('Reds')
cmap.set_under('w')
# cmap.set_over() # do something here?
levels = np.arange(0, .7, .1)
ds.data.plot.pcolormesh(
cmap=cmap,
vmin=levels[1],
# vmax=levels[-1],
extend='max',
norm = mpl.colors.BoundaryNorm(levels, ncolors=cmap.N, clip=False)
)
Run Code Online (Sandbox Code Playgroud)
我正在使用xarray,但是plt.pcolormesh的行为是相同的:
p = plt.pcolormesh(
np.arange(-180, 180, 10),
np.arange(-85, 90, 10),
np.random.rand(18, 36),
cmap=cmap, …Run Code Online (Sandbox Code Playgroud)