请考虑这个简化的代码段:
import numpy as np
x = np.arange(3)
y = np.arange(2)
X, Y = np.meshgrid(x,y)
我想将已准备好的颜色值分配给每个网格单元格。 我为每个RGB通道设置了与XY网格相同形状的颜色值作为标准化RGB值 - 因此它是3个numpy数组,每个数组包含0到1个浮点数,表示通道值
我首先尝试使用matplotlib.pyplot.pcolor,因为它似乎是我想要的精确工具,但我无法理解颜色映射是如何完成的。
似乎颜色数组(文档中的C)映射到默认(或手动分配)色彩映射,但我无法获得此颜色数组中值的逻辑及其作用。
如果值从网格单元格值映射到默认(或指定)色彩映射表,那么C颜色数组的目的是什么?
我为上面的例子手工制作了这个C数组(2x1 numpy数组),但无论它是什么值,我都得到相同的颜色,这些颜色似乎只依赖于网格单元格而不是这个C数组中的值。
所以我在这里感到困惑并寻求帮助,这不一定需要解释这个pcolor函数,但也许是用matplotlib为网格网格分配颜色值的正确方法
答案 0 :(得分:4)
您需要imshow
而不是pcolor
。 (虽然您可以使用pcolor
或pcolormesh
。)
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()