Matplotlib imshow()函数如何翻转x和y轴?

17
我正在使用 matplotlibpyplot,想将一些数据以图像的形式显示出来。但是当我使用 imshow() 时,数据的方向与我所期望的视图不符。我想要切换 x 和 y 轴,无论是在使用 imshow() 还是在将数据发送给 imshow() 之前通过 numpy 数组进行切换,请问该怎么做?
(即,我希望水平轴变成垂直轴)
我尝试在 imshow() 命令中使用 origin='upper'origin='lower',但这只是颠倒了一个轴,而没有交换它们。
我还尝试对数据使用 reshape,但顺序被打乱了。

2
转置numpy数组。 arr = arr.T - Daniel
1个回答

18
为了结束这个问题,您需要在将numpy数组传递给matplotlib之前对其进行转置:
```python plt.imshow(numpy_array.T) ```
>>> a
array([[0, 1],
       [2, 3]])
>>> a=a.T
>>> a
array([[0, 2],
       [1, 3]])

所以使用plt,应该简单地写成:

plt.imshow(a.T)

5
你可以在回答中提到,你只需将原始关键词传递给imshow函数即可。 - pelson
2
如何交换x和y轴?那只是将y轴翻转在自身上吗? - K.-Michael Aye
@K.-MichaelAye 不,转置会交换 X 和 Y 轴。你可以在示例中看到对角线保持不变(而仅翻转一个轴时并非如此)。 - dor00012
dor00012 抱歉,我是在回复上面 @pelson 的评论,因为原始关键字确实只翻转 y 轴。 - K.-Michael Aye
matplotlib 的 imshow 方法是逐行读取 2D 数组的,所以 imshow(a) 会在第一行显示 a[0],依此类推。 但对于应该在 x(向右)轴和 y(向上)轴绘制 a[x,y] 数据的情况(例如由 numpy.histogram2d 生成的数据),确实需要转置数据。 始终确保你要处理或绘制的数据的存储方式。 - pas-calc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接