使用matplotlib的2D像素图

时间:2015-04-08 08:15:30

标签: python matplotlib pixel reshape

我有一个关于2D像素图的问题,类似于: Make a 2D pixel plot with matplotlib

提供的答案有效,但我想改变y轴的方向。 我的代码如下所示:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cm

x = np.array([1, 1, 1, 2, 2, 2, 3, 3, 3])
y = np.array([1, 2, 3, 1, 2, 3, 1, 2, 3])
a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])
grid = a.reshape(3, 3)

plt.imshow(grid, extent=(x.min(), x.max(), y.min(), y.max()), interpolation='nearest', cmap=cm.jet, aspect="auto")

问题是重塑后,网格看起来像这样:

>grid
   array([[1, 2, 3],
          [4, 5, 6],
          [7, 8, 9]])

对于我想制作的情节,我需要一个这样的网格:

>grid
 array([[3, 6, 9],
        [2, 5, 8],
        [1, 4, 7]])

我已经研究了重塑的选项但找不到任何有用的东西。 关于如何改变网格的任何建议?

1 个答案:

答案 0 :(得分:1)

只需使用

grid.T[::-1]

a.reshape(3,3).T[::-1]

这会转换矩阵并反转行的顺序,从而为您提供正确的形状。

还可以使用imshow

origin中完成撤消行的顺序
plt.imshow(grid.T,origin='lower', ...)