用pyplot绘制三列矩阵

0 投票
2 回答
2778 浏览
提问于 2025-04-18 07:59

我有一个(numpy)矩阵,这个矩阵有三列,前两列是位置,第三列是数值。我想把这个矩阵画出来。我试过用 plt.imshow(...),但是这样画出来的图轴是矩阵的索引,而不是位置。

我该怎么做呢?

补充说明:我的矩阵是这样的:

array([[ -0.00000000e+00,   0.00000000e+00,   9.72157349e+01],
       [ -2.50000000e-02,   0.00000000e+00,   9.72157349e+01],
       [ -5.00000000e-02,   0.00000000e+00,   9.72157349e+01],
       ..., 
       [ -2.42500000e+00,   8.28630000e-05,   9.72157349e+01],
       [ -2.45000000e+00,   8.28630000e-05,   9.72157349e+01],
       [ -2.47500000e+00,   8.28630000e-05,   9.72157349e+01]])

第一列是 x 位置,第二列是 y 位置,第三列是那个点的数值。

2 个回答

0

最好使用散点图,并把第三列的数据用来表示颜色:

 A = your_matrix_as_numpy_array
 X,Y,Z = A.T # with Z the values at points x,y
 import matplotlib.pyplot as plt
 plt.scatter(X,Y,c=Z) 
 plt.colorbar()
 plt.show

注意,你仍然可以调整点的大小,改变形状等等。

1

Imshow这个函数需要你先把第三列的数据重新计算成一个二维矩阵,并提取出x轴和y轴的数据。然后你才能使用imshow。

使用imshow的时候,你还需要指定边界(extent),像这样:

plt.imshow(matrix, cmap=plt.cm.jet, aspect='auto', origin='lower', alpha=1,interpolation='none', extent=(xAxis[0],xAxis[-1], yAxis[0], yAxis[-1]))

plt.colorbar()
plt.show()

这样你就能看到正确的位置了。

撰写回答