关于MATLAB的contourf和contour函数同时使用的问题

在MATLAB上同时使用contour和contourf函数,会导致前一个等值线图的颜色发生变化。
如若先使用contourf画等值线图,结果如下:

img

然后使用contour函数画等值线,结果如下:

img

可以看到画完等值线后一开始画的填充等值线图变成了同一种颜色,而且第二个等值线图的线很乱,网上也没找到特别好的方法, 请问有什么方法可以解决呢?以下是我的代码

%用来画分潮等值线图的

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


在绘制等值线图之前将绘图区域的colormap设置为默认值:

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');
colormap default % 设置colormap为默认值
hold on;
contour(nt,nd,XX1)
colorbar
axes(ha(2))
contourf(nt,nd,YY2,'EdgeColor','none')
colormap default % 设置colormap为默认值
colorbar
axes(ha(3))
contourf(nt,nd,YY3,'EdgeColor','none')
colormap default % 设置colormap为默认值
colorbar
axes(ha(4))
contourf(nt,nd,YY4,'EdgeColor','none')
colormap default % 设置colormap为默认值
colorbar

如果答案对您有所帮助,望采纳。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^