使用 matplotlib 绘制二维像素图

2D pixel plot with matplotlib

我有一个关于 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]])

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

只需使用

grid.T[::-1]

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

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

也可以在 imshow 中使用 origin

反转行的顺序
plt.imshow(grid.T,origin='lower', ...)