Для первого участка вам нужно всего лишь использовать 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;
Это результат:
Второй сюжет очень похож на первый. Для доверительного интервала вы можете использовать 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;
Это результат:
Просто построить линии с помощью 'plot' и добавить текст с помощью' Text'. В чем проблема? – David
@David Как я могу заставить его отображаться Q1, Q2, Q3 и Q4? –
С функцией 'text', http://au.mathworks.com/help/matlab/ref/text.html – David