2013-12-09 2 views
1

데이터 세트로 40x40 행렬을 가지고 MATLAB을 사용하여 생성 된 히트 맵에 문자열 변수를 행 및 열 레이블로 지정하려고합니다. 도움말 페이지 구문을 올바르게 해석 할 수 없습니다. 누군가 나를 도울 수 있습니까?문자열을 HeatMap 레이블로 사용

+0

당신이, 당신의 코드와 당신이 얻을 오류 메시지를하시기 바랍니다 공유 할 수 있습니까? 그러면 불필요한 비트를 인용하지 않고도 Matlab 도움말을보다 쉽게 ​​설명 할 수 있습니다. – Schorsch

+0

내가 가지고있는 것은 HeatMap (행렬) 명령을 사용하여 플롯 한 40x40 요소가있는 행렬 벡터입니다. – user2203793

답변

5

원칙은 항상 동일합니다. 먼저 더 일반적인 예를 들어, 특히 HeatMap 함수의 경우 아래에 나와 있습니다.


나는 당신의 xy 데이터 따라서, 실제 인덱스 벡터 아닌 가정합니다.
% example data 
x = linspace(-20,40,40); 
y = linspace(20,100,40); 
[X,Y] = meshgrid(x,y); 
heat = X.*Y; 

% the plot 
figure(1) 
surf(X,Y,heat) 
view(0,90) 
colormap(hot) 
colorbar 

% the ticks 
xticks = 1:numel(x); 
yticks = 1:numel(y); 

set(gca,'XTick',x,'XTickLabels',xticks) 
set(gca,'YTick',y,'YTickLabels',xticks) 

enter image description here

개인적으로 매 초마다 값을 건너 뛸 것이며, 당신은 또한 레이블을 이동할 수 있습니다, 그래서 그들은 그리드에/모든 색상의 열/행, inbetween하지 아래에 있습니다

.

enter image description here


그리고 HeatMap 기능

set(gca,'XTick',x(1:2:end)+(x(2)-x(1))/2,'XTickLabels',xticks(1:2:end)) 
set(gca,'YTick',y(1:2:end)+(x(2)-x(1))/2,'YTickLabels',xticks(1:2:end)) 

. 똑같은 원칙은 다시 한번 당신이 문자열의 셀 배열을 필요로한다는 것입니다. 예를 들어 숫자로 1 to 40을 사용했습니다. 문자열 셀 배열로 대체 할 수 있습니다.

% same example data as above 
xticks = 1:numel(x); 
yticks = 1:numel(y); 
%xticks as string cell array 
xStrings = arrayfun(@num2str, xticks, 'Uniform', false); 
%yticks as string cell array 
yStrings = arrayfun(@num2str, yticks, 'Uniform', false); 
HeatMap(heat,'RowLabels', yStrings, 'ColumnLabels', xStrings) 

enter image description here


또는 좀 더 stringlike :

labelString = 'helloworldhelloworldhelloworldhelloworld'; 
labels = strsplit(sprintf('%c ',labelString),' '); 
labels = labels(1:end-1); 
HeatMap(heat,'RowLabels', fliplr(labels), 'ColumnLabels', labels) 

enter image description here

+0

문자열 요소를 레이블로 지정하고 행과 열 벡터를 구분하지 않습니다. HeatMap 함수를 사용하여 히트 맵을 만들려고했지만 문자열 요소 레이블을 지정하는 것조차 어려웠습니다. – user2203793

+0

@ user2203793 내 편집을보세요 – thewaywewalk

+0

그 작품 ... 고마워요! – user2203793