如何使用matplotlib将RGB颜色值分配给网格网格

the*_*eta 5 python matplotlib

请考虑这个简化的代码段:

import numpy as np

x = np.arange(3)
y = np.arange(2)

X, Y = np.meshgrid(x,y)
Run Code Online (Sandbox Code Playgroud)

我想将已准备好的颜色值分配给每个网格单元格.我为每个RGB通道设置了与XY网格相同形状的颜色值作为标准化RGB值 - 因此它是3个numpy数组,每个数组包含0到1个浮点数,表示通道值

我首先尝试使用matplotlib.pyplot.pcolor,因为它似乎是我想要的精确工具,但我无法理解颜色映射是如何完成的.

看来,色彩阵列(C中的文档)是在默认情况下映射(或手动分配)颜色表,但我不能获取值的逻辑在这个彩色阵列,它的作用.
如果值从网格单元格值映射到默认(或指定)色彩映射,那么C颜色数组的目的是什么?
我用手上面的例子(2×numpy的阵列)由该C数组,但不管其值I得到,似乎只依赖于网格单元值,而不是在该C数组的值相同的色彩.

所以我在这里很困惑并寻求帮助,这不一定需要解释这个pcolor函数,但也许是用matplotlib为网格网格指定颜色值的正确方法是什么

Joe*_*ton 4

你想要imshow而不是pcolor。(尽管你可以使用pcolororpcolormesh来实现这一点。)

import numpy as np
import matplotlib.pyplot as plt

# Make some random data to represent your r, g, b bands.
ny, nx = 2, 3
r, g, b = [np.random.random(ny*nx).reshape((ny, nx)) for _ in range(3)]

c = np.dstack([r,g,b])

plt.imshow(c, interpolation='nearest')
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 相当不错!这是MODIS数据吗?另外,对于连续数据,您可能不想要我在示例中指定的“最近”插值。默认插值方法是双线性的,它更适合您的数据。 (2认同)