Matplotlib imshow:数据轮换了吗? [英] Matplotlib imshow: Data rotated?

查看:38
本文介绍了Matplotlib imshow:数据轮换了吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I was trying to plot some data with scatter. My code is

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()

结果是

现在,我开始尝试用一些数据显示,因为我不喜欢分散的圈子.所以我尝试了

Now I came on the idea to try imshow with the some data, soince I didn't like the circles of scatter. So I tried this

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() 会反转数据?到底发生了什么?

My problem is obviosly why imshow() does invert the data? What happens here exactly?

PS:以下是数据,以防有人想玩与他们

PS: Here are the data, in case someone would like to play with them

推荐答案

查看 imshow 的关键字参数.有 origin .默认值为上",但您希望为下".

Look at the keyword arguments of imshow. There is origin. The default is "upper", but you want "lower".

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

The default makes sense for plotting images, that usually start at the top-left corner. For most matrix-plotting, you'll want origin="lower"

这篇关于Matplotlib imshow:数据轮换了吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆