numpy 具有用户定义值级别的pcolormesh

mqxuamgl  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(90)

当我使用plt.pcolormesh(xx,cmap =xx)时,我不能设置绘图的最小值。
例如,我画了一个二维数组数据,它表示某个地区的人口密度。
如果我想显示超过某个值的人口密度(如4500人/平方公里),我可以使用plt.contourf(pop,levels = [4500,6000,xxxx,xxxxx])来解决这个问题。
但是我想用pcolormesh风格,我想过两种方法:

  1. 1.设置色彩Map表开始为“白色”。
  2. 1.设置用户定义的水平,如等高线图。
z4bn682m

z4bn682m1#

对我来说,最明显的两个选择是(1)将数据转换为掩码数组,并使用colormap的set_bad()方法设置颜色,或者(2)将vmin参数用于pcolormesh(),并使用colormap的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()

相关问题