使用matplotlib.imshow绘制2D数组

use*_*224 5 python 2d matplotlib

np.array从这个循环的结果有4383行6列.我试过没有成功使用pylab.imshow()matplotlib(pylab)来显示数组.目标是创建数组的图像,颜色渐变表示数组值的大小.阵列的每一行代表每天湖泊温度的深度变化(4383天).因此,目标是在深度和时间上找到湖泊温度的差异.谢谢

TempLake=np.zeros((N+1,Nlayers)) 
TempLake[0]=T0 

Q=np.zeros(N+1) 
Q[0]=0.0 
for i in xrange(N): 
    Q[i+1]=Qn(HSR[i],TD[i],FW[i],TempLake[i][0]) 
    TempLake[i+1]=main_loop(Z,z,Areat0,Areat1,TempLake[i],wind[i],Q[i],Q[i+1]) 


im = plt.imshow(tem, cmap='hot') 
plt.colorbar(im, orientation='horizontal')  
plt.show() 
Run Code Online (Sandbox Code Playgroud)

结果如下:图例很好,但x轴反转,图像不显示 在此输入图像描述

这就是我需要的: 在此输入图像描述

wat*_*nic 9

可以使用imshow,如果你只是设置方面,当你调用它.如下:

im = plt.imshow(tem, cmap='hot', aspect=aspect_ratio*(cols/rows)) 
Run Code Online (Sandbox Code Playgroud)

其中,aspect_ratio这里将设置所需的实际宽高比和cols/rows刚刚标准化原始宽高比为1 colsrows的行和列(例如号码rows = data.shape[0],cols = data.shape[1]).


ims*_*msc 5

您需要使用pcolorpcolormesh代替imshow。这是因为在imshow图形方面与数组相同,在您的情况下为4383x6。

import pylab as plt
import numpy as np


Z=np.array((range(1,30),range(31,60),range(61,90))).transpose()

X,Y=np.meshgrid(range(Z.shape[0]+1),range(Z.shape[1]+1))
im = plt.pcolormesh(X,Y,Z.transpose(), cmap='hot')
plt.colorbar(im, orientation='horizontal')
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明