[英]pcolormesh with user-defined value level
使用plt.pcolormesh(xx,cmap = xx)时,无法设置绘图的最小值。
例如,我绘制了一个二维数组数据,该数据表示某个区域的人口密度。
http://i5.tietuku.com/89f39b85454eb277.png
如果我想显示超过某个值的人口密度(例如4500人/每平方千米),
我可以使用plt.contourf(pop,levels = [4500,6000,xxxx,xxxxx])解决该问题。
例:
http://i12.tietuku.com/2b5be9a6888c7c40.png
但是我想使用pcolormesh样式,我考虑了两种方法:
而且我找不到一些有用的指南。
熟悉此方法的人可以提供一些帮助吗?
非常感谢!
对我来说,两个最明显的选择是(1)将数据转换为蒙版数组并使用颜色图的set_bad()
方法设置颜色,或者(2)将vmin
参数用于pcolormesh()
并使用set_under()
设置颜色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()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.