2017-03-27 1 views
-1

나는 (320,100) 행렬을 가지고있다. 나는 히트 맵을 그려보고 싶다. 행렬의 행은 x 축을 따라야하고 열은 y 축을 따라야합니다. 나는 matshow 함수를 사용하고 있습니다. matshow 함수는 x 축 또는 열을 따라 행을 제공합니까? 그 옆에는 0에서 100까지의 x 축과 0에서 300까지의 y 축이 표시되어 있습니다. 행렬의 값을 선택하지 않는 이유는 무엇입니까?matshow 명령을 사용하여 히트 맵을 생성하는 방법은 무엇입니까?

[[-0.2706643 -0.25426278 -0.06284858 ..., -0.06432685 0.03350727 
    -0.09772336] 
..., 

[-0.2630468 -0.2508091 -0.16554087 ..., -0.3019954 0.11554097 
    -0.13261844]] 
+0

내가 이해하지 않는다 "는 행렬의 값을 따기되지 않는 이유?" 매트릭스의 값은 히트 맵에서 색상으로 표시됩니다. x 축과 관련이 없습니다. x 축과 y 축에 대해 무엇을 갖고 싶습니까? – ImportanceOfBeingErnest

답변

0

매트릭스가 "my_matrix"라고 가정합니다. 는

print len(my_matrix) 

컬럼의 정확한 수, print len(my_matrix[0])을 확인하려면, 행 번호를 확인합니다.

잘못된 경우 numpy_array = numpy.array (my_matrix)를 사용하여 행렬을 numpy 배열로 변환합니다 (항상 기본값으로 사용). 는 다음하기 matplotlib로 3 차원 적으로 이러한 행렬을 그릴 수

(행, 열) numpy_array.reshape으로 바꿀 행렬을 수행

여기
import matplotlib.pyplot as plt 
from matplotlib import cm 
import numpy as np 

fig = plt.figure(figsize=(10, 8)) 
ax = fig.gca(projection='3d') 
ax.set_aspect('equal') 
X = np.arange(xstart, xend, 1) 
Y = np.arange(ystart, yend, 1) 
X, Y = np.meshgrid(X, Y) 

surf = ax.plot_surface(X, Y, matrix_to_plot , rstride=1, cstride=1, cmap=cm.hot, linewidth=0, antialiased=True) 

ax.zaxis.set_major_locator(LinearLocator(5)) 
ax.zaxis.set_major_formatter(FormatStrFormatter('%.02f')) 
ax.set_xlim([xstart, xend]) 
ax.set_ylim([ystart, yend]) 
ax.set_xlabel("X") 
ax.set_ylabel("Y") 

fig.colorbar(surf, shrink=0.5, aspect=5) 

plt.tight_layout() 
plt.show() 
+0

설명해 주셔서 감사합니다.하지만 matshow 기능으로 2 차원으로 플롯해야합니다. 그러나 행렬의 행은 x 축을 따라야하고 열은 y 축을 따라야합니다. – eman

+0

또한이 함수는 그림의 맨 위에있는 x 축이 아닌 값을 할당합니다. – eman

1

배열 인덱싱 방법 어떻게 imshow를 생성하거나 matshow 플롯이 보입니다. 여기서 배열은 모양 (7,5)이므로 7 개의 행과 5 개의 열이 있습니다. 열은 x이고 행은 y입니다. 여기

enter image description here

imshowmatshow 차이이다 imshow은 그래프의 하부에 X ticklabels 갖는다.

enter image description here

당신은 열을 행으로 그 반대로 설정되어하는 배열을 바꾸어 수 있습니다. A 경우 배열이고 당신은 import 에드 numpy as np을 수행

A = np.array(A).T 

enter image description here

+0

감사합니다. 좋은 설명. – eman

+1

이 질문에 대한 답변을 얻으려면 [accepting] (https://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)을 고려하십시오. 나는 당신이 당신의 질문에 대한 답을 결코 받아들이지 않았 음을 알고 있습니다. 그래서 그것에 대해 읽고 싶을지도 모릅니다. 반면에 아직 미결 된 문제가있는 경우 이에 따라 질문을 편집 할 수 있습니다. – ImportanceOfBeingErnest

관련 문제