2014-09-24 1 views
0

첨부 된 것과 같은 플롯의 경우 이중 카테고리 축을 소개하는 방법이 있습니까? A (저조한 그림) 예제도 첨부 된 것으로 볼 수 있습니다.Matlab - 이중 카테고리 X 축 (요일 및 시간)

이상적으로 자동차가 너무 정적 일 이름이 적합하지 않은 설정, 생성되어야 보고서 ..

편집 : 나는 또한 매일 시간을 다시 시작해야 할 좋은 것입니다 언급해야한다, 0-24,0 -24,0-24 등

Example data

Ideal Result

답변

2

일에 대해 확실하지만, 나는 시간을위한 제안이 없습니다. 다음과 같은 상상 :

hours = 0:70; 
data=rand(size(hours)); 
plot(hours,data,'*') 
xlabel('Hours of day') 

이것은 다음과 같은 플롯을 제공합니다

enter image description here

지금 당신은 x 축에 사용되는 라벨을 편집해야합니다. 여기에 한 가지 방법이 있습니다. 셀 배열을 다루고 문자열과 숫자 데이터 유형간에 물건을 변환해야하기 때문에 가장 우아한 것은 아니지만 최소한 옥타브에서는 작동하는 것으로 보입니다.

temp = get(gca,'xticklabel'); 
for k=1:length(temp) 
    temp{k} = num2str(mod(str2num(temp{k}),24)); 
end 
set(gca,'xticklabel',temp) 
다음 그래프 제공

:

enter image description here

행운을 아래에서 일을 추가로를! (어쩌면 text 명령을 영리한 방법으로 사용)

+0

멋진 대답! 나는 당신이 출판 된 그대로 내 것을 추가했습니다 :) +1 –

2

다음은 텍스트 주석을 사용하는 매우 맞춤형 방법입니다. 데이터에 맞게 사소한 변경 사항을 추가해야 할 수도 있습니다. 이 같은

clc 
clear 

x = 1:80; 

HourValues = repmat([0 10 20],1,3); 
DaysString = {'Mon' 'Tue' 'Wed'}; 

NumDays = numel(DaysString); 

plot(x,rand(1,80)) 

set(gca,'XTickLabel',HourValues) % Set xtick labels 

xlimit = get(gca,'XLim'); % Get x and y- limits 
ylimit = get(gca,'YLim'); 



% May need some adaptation to fit your data 
for k = 1:NumDays  
    text((NumDays*k-2)*10,ylimit(1)-.06,DaysString{k},'FontSize',14,'HorizontalAlignment','Center') 
end 

text(xlimit(2)/2,ylimit(1)-0.1,'Hour of day','FontSize',16,'HorizontalAlignment','Center') 

주기 뭔가 :

enter image description here