我试着用scatter绘制一些数据。我的代码是
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()
结果是
现在我有了一个想法,尝试用一些数据来显示,因为我不喜欢散布的圆圈。所以我试了一下
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:这是data,如果有人想玩的话
发布于 2013-01-14 22:22:25
看看imshow
的关键字参数。这就是origin
。默认值是"upper",但你想要"lower“。
默认设置对于打印图像很有意义,通常从左上角开始。对于大多数矩阵绘图,您需要使用origin="lower"
发布于 2013-01-14 22:22:07
它不是反转的,只是翻转的。imshow
的原点默认位于左上角,而不是左下角。imshow
有一个参数来指定原点,它被命名为原点。或者,您可以在matplotlib.conf
中设置默认值。
发布于 2015-07-18 21:14:22
如果要绘制f(X, Y) = Z
格式的数据,请考虑使用pcolormesh
或contourf
。imshow
只需绘制data Z
,缩放和重采样必须手动完成。
https://stackoverflow.com/questions/14320159
复制相似问题