Matplotlib imshow:数据旋转?

新手上路,请多包涵

我试图用散点图绘制一些数据。我的代码是

import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np
from scipy.interpolate import griddata
data = np.loadtxt('file1.txt')
x = data[:,0]
y = data[:,1]
z = data[:,2]
plt.scatter(x, y, c=z, s=100, cmap=mpl.cm.spectral)
cbar=plt.colorbar()
s=18
plt.ylabel(r"$a_v$", size=s)
plt.xlabel(r"$a_{\rm min}$", size=s)
plt.xlim([x.min(),x.max()])
plt.ylim([y.min(),y.max()])
plt.show()

结果是在此处输入图像描述

现在我想到了用一些数据尝试 imshow 的想法,因为我不喜欢散点图。所以我试过了

from matplotlib.mlab import griddata
import matplotlib.pyplot as plt
data = np.loadtxt('file1.txt')
x = data[:,0]
y = data[:,1]
z = data[:,2]

N = 30j
extent = (min(x), max(x), min(y), max(y))

xs,ys = np.mgrid[extent[0]:extent[1]:N, extent[2]:extent[3]:N]

resampled = griddata(x, y, z, xs, ys)

plt.imshow(resampled.T, extent=extent)
s=18
plt.ylabel(r"$a_v$", size=s)
plt.xlabel(r"$a_{\rm min}$", size=s)
plt.xlim([x.min(),x.max()])
plt.ylim([y.min(),y.max()])
cbar=plt.colorbar()
plt.show()

有了这个结果:在此处输入图像描述

我的问题很明显,为什么 imshow() 会反转数据?这里到底发生了什么?

PS:这是 数据,以防有人想玩它们

原文由 Tengis 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 646
2 个回答

查看 imshow 的关键字参数。有 origin 。默认是“上”,但你想要“下”。

默认值对于绘制图像很有意义,通常从左上角开始。对于大多数矩阵绘图,您需要 origin="lower"

原文由 Thorsten Kranz 发布,翻译遵循 CC BY-SA 3.0 许可协议

不是倒置,只是翻转。 imshow 的原点默认为左上而不是左下。 imshow 有一个指定原点的参数,它的名字叫origin。或者,您可以在 matplotlib.conf 中设置默认值。

原文由 Bernhard 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏