使用pcolor在python中绘制3个数组

使用pcolor在python中绘制3个数组,python,image-processing,numpy,matplotlib,Python,Image Processing,Numpy,Matplotlib,我读了一张卫星图像,从图像中获取数据,lat和lon,然后放入一个阵列。lat的尺寸为(135,90),lon的尺寸也为(135,90)。数据的维度最初是(135,90,4,9,8),其中4表示图像的频带。经过处理(使用for循环将所有波段放在一幅图像中),数据的尺寸为biw(1215720),即(135 x 9,90 x 8)。我有一段代码,它是: x = lat # dimension (135,90) y = lon # dimension (135,90) z = data #

我读了一张卫星图像,从图像中获取数据,lat和lon,然后放入一个阵列。lat的尺寸为(135,90),lon的尺寸也为(135,90)。数据的维度最初是(135,90,4,9,8),其中4表示图像的频带。经过处理(使用for循环将所有波段放在一幅图像中),数据的尺寸为biw(1215720),即(135 x 9,90 x 8)。我有一段代码,它是:

x = lat   # dimension (135,90)
y = lon   # dimension (135,90)
z = data  # dimension ( 1215, 720) 

plt.figure()
plt.pcolor(x,y,z)
plt.colorbar()
plt.savefig("proj1.png")
但随后它在下面产生了一个非常糟糕的形象:


我的朋友之前告诉我应该在lat和lon中取更多的点,以便使其与数据的维度相同。但我不知道怎么做。他说的方法正确吗?

又是我。。。matplotlib的文档在这里说

X和Y,如果给定,指定彩色四边形的(X,Y)坐标;C[i,j]的四边形在以下位置有角:

理想情况下,X和Y的尺寸应比C的尺寸大一倍;如果尺寸相同,则C的最后一行和最后一列将被忽略

然而,C的尺寸(或形状)与X和Y完全不同。matplotlib通常希望您准备(1)X,Y是网格点(或角点)的X和Y坐标,(2)C是由4个相邻网格点包围的瓷砖的值。所以x的形状,y是135和90。然后颜色应该是134乘89,或者135和90

我的理解是,这个C的数据来自modis像素,你们已经有了135x90。所以你应该指定12150瓷砖的角点。。。有道理?若知道中心点的纬度/经度,则将其向左/向下移动半个距离,然后在右/上方添加一行和一列以创建栅格点。如果使用投影坐标而不是lat/lon,则情况相同。或者你可以忘记这些半程交易,只需插入你已经得到的X和Y(135x90),以及C,它必须是135x90,才能使用pcolor

(135,90,4,9,8)中的9,8是什么意思?每个水平网格单元是否有9*8个不同的属性?e、 垂直层、不同种类的化学物质或物理性质?如果是这样,您必须选择一个,并一次绘制一个图(即,仅输入135x90的C以及您的X和Y)。另外,你提到4代表“乐队”。如果这个id色带像RGBK,你想显示这个颜色,那么pcolor可能不好,你必须寻找一些其他的函数或者理解这4个数字的东西。pcolor只需读取数字范围,然后应用最小值和最大值之间的比例,然后应用从蓝色到红色的颜色比例(或任何您选择的颜色比例)

编辑

我抓取了一个1B级的数据集,以及来自的文档

该数据集由AIRS 1A级数字编号(DN)生成,包括频谱0.4至1.0 um区域内的4个通道。一天的AIRS数据分为240个场景,每个场景持续6分钟。对于AIRS可见光/近红外测量,单个场景包含135条扫描线,其中扫描线包含720个交叉轨迹像素和9个沿轨迹像素;每个场景总共有720 x 9 x 135=874800个可见/近红外像素

因此,最简单的方法是获得每个位置的8x9值的平均值,并从四个轨迹中一次选择一个。或者,由于这些波段对应不同的颜色,如下面的波长所示

  • 第一频道:0.41微米-0.44微米
  • 第二频道:0.58微米-0.68微米
  • 第三频道:0.71微米-0.92微米
  • 第四频道:0.49微米-0.94微米
您可能会将这些用作pylab的imshow()函数输入的RGBK值。您可能不喜欢空间平均后输出的粗略分辨率。在这种情况下,您必须以某种方式获取每个位置内(9,8)个像素的坐标。但是应该有一个标准的方法,数据是广泛使用的公共数据

    (X[i,   j],   Y[i,   j]),
    (X[i,   j+1], Y[i,   j+1]),
    (X[i+1, j],   Y[i+1, j]),
    (X[i+1, j+1], Y[i+1, j+1]).