【发布时间】:2015-05-27 18:04:07
【问题描述】:
我想用 matplotlib 在一组轴上绘制几个 RGB 图像。我最初尝试为此使用 imshow ,但它似乎无法处理一组具有不同范围的轴上的两个图像(当我绘制第二个时,它使第一个消失)。我认为这里的答案是使用 pcolormesh,比如How to plot an irregular spaced RGB image using python and basemap?
但是,这似乎对我不起作用 - 来自可映射的颜色(即我传递给 pcolormesh 的数据数组和我指定的 cmap)覆盖我指定的面颜色。网格的边缘确实有正确的颜色,但不是面。
有人知道如何直接设置面的颜色吗?理想情况下,我会使用一个 pcolormesh,它采用 n*m*3 数组作为 n*m 的替代品,就像 imshow...
我希望它如何工作的最小示例: 将 numpy 导入为 np 将 matplotlib.pyplot 导入为 plt
#make some sample data
x, y = np.meshgrid(np.linspace(0,255,1),np.linspace(0,255,1))
r, g = np.meshgrid(np.linspace(0,255,100),np.linspace(0,255,120))
b=255-r
#this is now an RGB array, 100x100x3 that I want to display
rgb = np.array([r,g,b]).T
m = plt.pcolormesh(x, y, rgb/255.0, linewidth=0)
plt.show()
问题是对 plt.pcolormesh 的调用失败了,
numRows, numCols = C.shape
ValueError: too many values to unpack
我猜这是因为它需要一个 2D 数组,而不是最后一个维度为 3 长的 3D 数组。
【问题讨论】:
-
这就是 pcolor 网格应该如何工作的......您能否提供一个您尝试过的最小(可运行)示例?
-
@tcaswell 谢谢。这是我尝试的第一件事(我在上面添加了一个示例)但它不起作用,错误强烈表明它假设一个二维数组作为输入。如果它有所作为,我正在使用 matplotlib 1.3.1。
标签: python matplotlib plot