繁体   English   中英

具有用户定义值级别的pcolormesh

[英]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. 设置颜色图以“白色”开头。
    1. 设置用户定义的级别,例如轮廓线图。

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

非常感谢!

对我来说,两个最明显的选择是(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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM