使用 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', ...)
我有一个关于 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', ...)