2012-08-02 7 views
4

이 루프로 인해 생성되는 np.array에는 4383 개의 행과 6 개의 열이 있습니다. matplotlib (pylab)의 pylab.imshow()을 사용하여 배열을 표시하려고 시도했지만 성공하지 못했습니다. 목표는 배열의 이미지를 생성하는 것입니다. 색상 그라디언트는 배열 값의 크기를 나타냅니다. 배열의 각 행은 매일 (4383 일) 호수 온도의 심도 변화를 나타냅니다. 따라서 호수의 기온은 깊이와 시간에 따라 차이가 있습니다. 전설은 괜찮지 만, x 축이 반전하고 이미지가 나던이 내가해야 할 것입니다 enter image description herematplotlib.imshow로 2D 배열 플로팅

나타납니다 :이 결과 당신

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

감사 enter image description here

답변

3

당신은 pcolor 또는 pcolormesh 대신 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() 

enter image description here

0

당신은 matplotlib.pyplot에서 축 기능을 사용할 수 있습니다 :

axis('auto') 

그래서 exemple는 BECO 것 나 :

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.axis('auto') 
plt.show() 
+0

exammple을 줄 수 있습니까?이 함수를 찾을 수 없습니까? – user1419224

1

은 어쩌면 내가 틀렸다하지만 당신은 여전히 ​​낮은 바닥에서 plost 시작이 남긴 말과 이미지

im = plt.imshow(tem.transpose(),cmap='hot',origin='lower',aspect='auto') 

를 전치 imshow 사용할 수 있으며, 자동 imshow의 키워드. 나는 어쩌면 말했듯이 당신이 그것을 호출 할 때 그냥 화면을 설정한다면 나는 문제를

+0

아니요, 'imshow'에서 그림의 양상은 배열에 따라 다르기 때문에'transpose'는 90도만큼 회전시킵니다. – imsc

+0

이것은 나를 위해 잘 작동합니다. – maurobio

8

당신 사용 imshow을 이해하지 않습니다. 다음과 같이 aspect_ratio 여기에 실제 가로 세로 비율을 설정합니다

im = plt.imshow(tem, cmap='hot', aspect=aspect_ratio*(cols/rows)) 

당신이 원하는 cols/rows 단지 1 colsrows 원래 화면 비율을 정상화 열과 행의 수 (예를 들어 rows = data.shape[0], cols = data.shape[1])입니다.

+0

계산을 수동으로하고 싶지 않은 경우, 이미지를 그림에 맞추려는 작업을 수행하는'aspect = "auto"'를 사용할 수도 있습니다. – jadsq