具有用户定义值级别的 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风格,我想过两种方法:
- 设置颜色图以 "white" 开头。
- 设置用户定义的级别,如 contourf 图。
我找不到有用的指南。
熟悉这方面的人可以提供一些帮助吗?
非常感谢!
对我来说最明显的两个选择是 (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()
当我使用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风格,我想过两种方法:
- 设置颜色图以 "white" 开头。
- 设置用户定义的级别,如 contourf 图。
我找不到有用的指南。
熟悉这方面的人可以提供一些帮助吗?
非常感谢!
对我来说最明显的两个选择是 (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()