2015-07-15 5 views
0

Я хочу, чтобы построить график, как показано ниже:Как построить график квартала в Matlab?

enter image description here

И это одна:

enter image description here

я делал что-то вроде этого:

cc=hsv(ns); 
hold on; 
for nk=1:ns 
    figure(4); hold on; 
    h=plot(M1(nk,:),':','color',cc(nk,:)); 
    set(h,'linewidth',2) 
end 

Как может Я делаю это?

+0

Просто построить линии с помощью 'plot' и добавить текст с помощью' Text'. В чем проблема? – David

+0

@David Как я могу заставить его отображаться Q1, Q2, Q3 и Q4? –

+0

С функцией 'text', http://au.mathworks.com/help/matlab/ref/text.html – David

ответ

2

Для первого участка вам нужно всего лишь использовать plot и text плюс некоторые настройки. Если вы хотите, чтобы легенда была в двух столбцах, посмотрите на columnlegend в . Обмен файлами Matlab.

% generate some data 
days = (1:250); 
M1 = (days'*[0.06,-0.03,0.02,-0.04,0.05,-0.05,0.01])'; 
M1 = M1 + 0.5*randn(size(M1)); 
years = 2002+(1:size(M1,1)); 

ns = size(M1,1); 

% prepare plot 
figure(4); hold on; 
cc = hsv(ns); 

% plot all prices 
for nk = 1:ns 
    ph = plot(days,M1(nk,:),'Color',cc(nk,:)); 
    set(ph,'LineWidth',2); 
end 

% plot texts 
for i = 1:4 
    h = text(250/8+(i-1)*250/4,18,['Q',num2str(i)]); 
    set(h,'FontSize',13,'HorizontalAlignment','center'); 
end 

% plot vertical lines and the horizontal line 
plot([250,250]'*(0:4)/4,[-21,21],'k-.'); 
plot([-10,250+10],[0,0],'k-.'); 

% set limits 
set(gca,'XLim',[-10,250+10]); 
set(gca,'YLim',[-21,21]); 

% set labels and legend 
xlabel('Day of Trading'); 
ylabel('Normalized Price'); 
lh = legend(cellstr(num2str(years')),'Location','SouthWest'); 
set(lh,'FontSize',8); 

% tweak appearance 
set(gca,'YTick',-20:10:20); 
set(gca,'FontSize',13); 
set(gca,'GridLineStyle',':'); 
grid on; 
box on; 

Это результат:

result1


Второй сюжет очень похож на первый. Для доверительного интервала вы можете использовать fill. Поскольку записи в легенде имеют другой порядок, как порядок их построения, мы храним ручки и передаем их в качестве первого аргумента legend.

% generate some data 
rng(2); 
days = (1:250); 
realised_Q1 = (1:62)*0.04+0.5*randn(1,62); 
realised_Q234 = realised_Q1(end)+(1:189)*0.03+0.5*randn(1,189); 
forecast_Q234 = realised_Q1(end)-3*sin((1:189)/40); 
confidence_up = forecast_Q234+(1-exp(-(0:188)/10)); 
confidence_down = forecast_Q234-(1-exp(-(0:188)/10)); 

% prepare plot 
figure; hold on; 
ph = zeros(4,1); 

% plot confidence interval 
ph(4) = fill([days(62:250),fliplr(days(62:250))],... 
      [confidence_up,fliplr(confidence_down)],... 
      [0.85,0.85,1],'EdgeColor','none'); 

% plot realized Q1 
ph(1) = plot(days(1:62),realised_Q1,'r','LineWidth',2); 

% plot realized Q2 Q3 Q4 and forecast Q2 Q3 Q4 
ph(2) = plot(days(62:250),realised_Q234,'k','LineWidth',2); 
ph(3) = plot(days(62:250),forecast_Q234,'b','LineWidth',2); 

% plot texts 
for i = 1:4 
    h = text(250/8+(i-1)*250/4,13,['Q',num2str(i)]); 
    set(h,'FontSize',13,'HorizontalAlignment','center'); 
end 

% plot vertical lines and the horizontal line 
plot([250,250]'*(0:4)/4,[-21,21],'k-.'); 
plot([-10,250+10],[0,0],'k-.'); 

% set limits 
set(gca,'XLim',[-10,250+10]); 
set(gca,'YLim',[-6,16]); 

% set labels and legend 
xlabel('Day of Trading'); 
ylabel('Normalized Price'); 
lh = legend(ph,'Realized Q1 (2011)','Realized Q2 Q3 Q4 (2011)',... 
      'Forecast Q2 Q3 Q4 (2011)','Confidence',... 
      'Location','SouthWest'); 
set(lh,'FontSize',8); 

% tweak appearance 
set(gca,'YTick',-5:5:15); 
set(gca,'FontSize',13); 
set(gca,'GridLineStyle',':'); 
grid on; 
box on; 

Это результат: result2

+1

очень хорошая работа хорошая работа! +1 –

Смежные вопросы