具有用户定义值级别的 pcolormesh

pcolormesh with user-defined value level

当我使用plt.pcolormesh(xx,cmap =xx)时,无法设置绘图的最小值
比如我画了一个二维数组数据,表示某个地区的人口密度。
http://i5.tietuku.com/89f39b85454eb277.png

如果我想显示超过某个值的人口密度(比如4500 people/Km2),
我可以使用 plt.contourf(pop,levels = [4500,6000,xxxx,xxxxx]) 来解决这个问题。

示例:
http://i12.tietuku.com/2b5be9a6888c7c40.png

但是我想用pcolormesh风格,我想过两种方法:

我找不到有用的指南。
熟悉这方面的人可以提供一些帮助吗?

非常感谢!

对我来说最明显的两个选择是 (1) 将数据转换为掩码数组并使用颜色图的 set_bad() 方法设置颜色或 (2) 使用 vmin 参数pcolormesh() 并使用颜色图的 set_under() 方法设置颜色。

这是一个使用 Numpy 数组 xx 中的一些数据的示例,这些数据的值介于 0 和 57 之间。我屏蔽了小于 25 的值,并将屏蔽值的绘图颜色设置为黑色这样更容易看到效果。

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cm

F, (A1,A2) = plt.subplots(ncols=2,figsize=(15,5))

# Option 1:
xxm = np.ma.masked_less(x,25)

cmap1 = cm.get_cmap("jet",lut=10)
cmap1.set_bad("k")

A1.set_title("Using masked array")
P = A1.pcolormesh(LON,LAT,xxm,cmap=cmap1)
plt.colorbar(P,ax=A1)

# Option 2:
cmap2 = cm.get_cmap("jet",lut=10)
cmap2.set_under("k")

A2.set_title("Using vmin")
P = A2.pcolormesh(LON,LAT,xx,cmap=cmap2,vmin=25)
plt.colorbar(P,ax=A2)

plt.show()