1、生成具有陰影區(qū)域的時(shí)間序列圖
基本思路:
1)先繪制一個(gè)坐標(biāo)系(圖層1);
2)在圖層1上添加陰影區(qū)域(圖層2);
3)在圖層2上添加時(shí)間序列曲線(圖層3)。
2、作圖代碼
%%
CPI=xlsread('CPI_date3.xlsx',1,'B3:B392')';%1987年1月至2019年CPI數(shù)據(jù)
Q_CPI=1:length(CPI);
year=1987:2019;%年份
mon=1:12;%月份
date=cell(length(mon),length(year));%預(yù)分配內(nèi)存——空元胞數(shù)組矩陣中用于存儲(chǔ)自變量刻度標(biāo)簽(字符串)
[m,n]=size(date);
for ii=1:n;
for jj=1:m;
%將月度標(biāo)簽的字符串(例如:2005m3)存儲(chǔ)在date中
date{jj,ii}=[num2str(year(ii)), 'm', num2str(mon(jj))];
tem=~cellfun(@isempty,date);%判斷date中元素是否為[]
if sum(sum(tem))==length(CPI);%如果循環(huán)過程中的X變量標(biāo)簽等于X變量的長(zhǎng)度,則退出循環(huán)
break
end
end
end
date_1=reshape(date,1,m*n);
tem2=~cellfun(@isempty,date_1);%判斷元胞數(shù)組矩陣中的元素是否為空。
tem3=sort(tem2(find(tem2>0)));%find(tem2>0)找到tem2中元素大于0的個(gè)數(shù)所在的位置。
date_1(length(tem3)+1:end)=[];
%%
s=[20,40;%指定陰影部分在橫軸上的區(qū)間
90,145;
235,255;
271,295];
axis tight
xl=xlim;%x軸刻度范圍
yl=[-10,30];%y軸刻度范圍
bottom=yl(1,1);
top=yl(1,2);
for ii=1:length(s)
%ha為陰影面積圖形句柄
ha = area([s(ii,1) s(ii,2)], [bottom top-bottom; bottom top-bottom],...%指定陰影面積區(qū)域
'FaceColor',[0.9 0.9 0.9],...%陰影面積圖表明顏色
'EdgeColor','white','ShowBaseline','off');%陰影面積圖邊緣顏色(白),隱藏基線
set(ha(1), 'FaceColor', 'none') % 使得陰影部分底部區(qū)域不可見
set(ha, 'LineStyle', '-')
hold on %使用hold on保證循環(huán)過程中陰影面積不會(huì)被刷新掉
end
set(gca,'Layer','top')%將坐標(biāo)軸線條置于陰影部分之上。
%%
P1=plot(Q_CPI,CPI,'r-','LineWidth',2);%用圖形句柄表示CPI曲線圖是為了在添加圖例時(shí)抑制陰影部分圖例
title('CPI(當(dāng)月同比:%)')
legend(P1,'CPI');
xlim([1,length(CPI)]);
grid on
set(gca, 'GridAlpha',0.15);
set(gca,'xtick',[1:24:390]);%設(shè)置橫坐標(biāo)刻度
set(gca,'xticklabel',date_1(1:24:390));%設(shè)置橫坐標(biāo)刻度標(biāo)簽
3、效果圖

陰影時(shí)間序列圖.jpg