在MATLAB上同时使用contour和contourf函数,会导致前一个等值线图的颜色发生变化。
如若先使用contourf画等值线图,结果如下:
然后使用contour函数画等值线,结果如下:
可以看到画完等值线后一开始画的填充等值线图变成了同一种颜色,而且第二个等值线图的线很乱,网上也没找到特别好的方法, 请问有什么方法可以解决呢?以下是我的代码
%用来画分潮等值线图的
clear,clc;
addpath E:\毕业论文资料\数据
sname={'三灶' '灯笼山' '竹银' '甘竹' '马口'};
fname={'\fontname{times new roman}(a) \fontname{宋体}三灶' '\fontname{times new roman}(b) \fontname{宋体}灯笼山'...
'\fontname{times new roman}(c) \fontname{宋体}竹银'...
'\fontname{times new roman}(d) \fontname{宋体}甘竹' '\fontname{times new roman}(e) \fontname{宋体}马口'};
data=readmatrix('马口、三水逐时流量(1966-2016).xlsx','NumHeaderLines',1);
LL_t=datenum(data(:,1),data(:,2),data(:,3),data(:,4),data(:,5),data(:,6));
[LLyear] = datevec(LL_t);
MK_Q=data(:,7);
load('三灶.mat')
w=2*pi./18.61;
dtm=[-10 4.5 25 81 129]+10;
nd=0:1:139;
% byear=[2003 1993 1993 1990 1994];
byear=[1991 1999 2000 1986 1993];
t=1966:2016;
for i = 1 : 5
load([sname{i} 'harmony_skewness.mat']);
et=find(t==byear(i)-1);
year=1966;j=1;
while(year<=2016)
sn=find(LL_t==datenum(year,0,0,0,0,0));
en=find(LL_t==datenum(year,12,31,0,0,0));
if isempty(sn)
sn=1;
end
Y1(i,j)=nanmean(Ht(1,sn:en),2);
Y2(i,j)=nanmean(Ht(2,sn:en),2);
Y3(i,j)=nanmean(Ht(3,sn:en),2);
Y4(i,j)=nanmean(Ht(5,sn:en),2);
X1(i,j)=nanmean(Gt(1,sn:en),2);
X2(i,j)=nanmean(Gt(2,sn:en),2);
X3(i,j)=nanmean(Gt(3,sn:en),2);
X4(i,j)=nanmean(Gt(5,sn:en),2);
year=year+1;
j=j+1;
end
end
%% smooth
nt=1966:0.1:2016;
[xq,yq] = meshgrid(nt,nd);
YY1 = griddata(t,dtm,Y1,xq,yq,'natural');
YY2 = griddata(t,dtm,Y2,xq,yq,'natural');
YY3 = griddata(t,dtm,Y3,xq,yq,'natural');
YY4 = griddata(t,dtm,Y4,xq,yq,'natural');
XX1 = griddata(t,dtm,X1,xq,yq);
%% Plot
figure('unit','centimeters','position',[.1,.1,23,23],'color','w')
ha=tight_subplot(2,2,4,[.05 .06],[.08,.03],[.08 .05]);
axes(ha(1))
contourf(nt,nd,YY1,'EdgeColor','none');hold on;
contour(nt,nd,XX1)
colorbar
axes(ha(2))
contourf(nt,nd,YY2,'EdgeColor','none')
colorbar
axes(ha(3))
contourf(nt,nd,YY3,'EdgeColor','none')
colorbar
axes(ha(4))
contourf(nt,nd,YY4,'EdgeColor','none')
colorbar