Why do I get this error while plotting this?
41 次查看(过去 30 天)
显示 更早的评论
Hello everyone,
I would like to plot the first plot you can see here with the "%other plots" that you see in the code, but I got an error.
Can anyone help me please?
Thank you.
load('giulia_TT');
GIULIA_YEARLY_N=retime(giulia_TT,'yearly','mean');
N=GIULIA_YEARLY_N.Var5*3.5
LD = load('giulia_TT.mat');
giulia_TT = LD.giulia_TT;
GIULIA_YEARLY_N = retime(giulia_TT,'yearly', @(x)mean(x,'omitnan')); % Yearly Average
N=GIULIA_YEARLY_N.Var5*3.5;
SelIdx = year(GIULIA_YEARLY_N.Time) >= 1998; % Logical Mask Vectror
N_Sel = N(SelIdx);
N_Sel_Dif = -diff(N_Sel);
Years = 1998+(1:numel(N_Sel_Dif));
figure
plot(Years, N_Sel_Dif)
grid
xlim([min(Years) max(Years)])
xlabel('Years')
ylabel('Yearly N-Differences')
set(gca, 'XTick',Years)
plot(Years, N_Sel_Dif,'g-^' ,'MarkerEdgeColor','k','MarkerFaceColor','g')
hold on
set(gca, 'ytick', -200:25:400);
%OTHER PLOTS
load('PALINE_GIULIA_DELTA');
errorbar(T.Year(:,1),T.Var4(:,1),T.Var3(:,1),'.r','MarkerSize',6)
hold on
% plot(T.Year(:,1),[NEW(:,1), T.Var4(:,1)]);
hold on
xlabel('Time');
ylabel('Height(mm)');
title('Giulia AWS and Stakes')
%error bar with different colors
errorbar(T.Year(1:3696,1),T.Var4(1:3696,1),T.Var3(1:3696,1),'.r','MarkerSize',6,'DisplayName','Stakes'); hold on
hold on
errorbar(T.Year(4406:4771,1),T.Var4(4406:4771,1),T.Var3(4406:4771,1),'.b','MarkerSize',6,'DisplayName','Stakes');
hold on
errorbar(T.Year(4772:4880,1),T.Var4(4772:4880,1),T.Var3(4772:4880,1),'.r','MarkerSize',6);
hold on
errorbar(T.Year(4881:7722,1),T.Var4(4881:7722,1),T.Var3(4881:7722,1),'.b','MarkerSize',6);
hold on
%plot(T.Year(:,1),[NEW, T.Var4(:,1)],'g');
xlabel('Time');
ylabel('Height(mm)');
title('Giulia');
load('DATI_MAR_ANNUALI');
load('DATA_ECM');
plot(datetime(DATIMARannuali.Year(20:end,1),1,1), DATIMARannuali.SMB_mp_mm(20:end,1),'--co', 'MarkerEdgeColor','k','MarkerFaceColor','c', 'DisplayName','MAR');
hold off
hold on
plot(datetime(DATIECMWFannuali.Year,1,1), DATIECMWFannuali.SMB_mp_mm,'m-*', 'DisplayName','ECMWF');
legend('Location','best')
hold on
0 个评论
采纳的回答
Walter Roberson
2021-8-26
errorbar() does support datetime inputs
The problem is that you are plotting year first, and the year you plot is pure numeric, 1998+something. Once you have plotted numeric in an axes, you cannot plot datetime or categorical in the same axes.
The workaround is to turn the year into datetime objects,
Years = datetime(Years, 1, 1, 'Format', 'yyyy')
8 个评论
Walter Roberson
2021-8-27
I do not encounter any problem.
load('giulia_TT');
LD = load('giulia_TT.mat');
giulia_TT = LD.giulia_TT;
GIULIA_YEARLY_N = retime(giulia_TT,'yearly', @(x)mean(x,1,'omitnan')); % Yearly Average
N=GIULIA_YEARLY_N.Var5*3.5;
SelIdx = year(GIULIA_YEARLY_N.Time) >= 1998; % Logical Mask Vectror
N_Sel = N(SelIdx);
N_Sel_Dif = -diff(N_Sel);
Years = 1998+(1:numel(N_Sel_Dif));
Years = datetime(Years, 1, 1, 'Format', 'yyyy');
figure
plot(Years, N_Sel_Dif)
grid
xlim([min(Years) max(Years)])
xlabel('Years')
ylabel('Yearly N-Differences')
set(gca, 'XTick',Years)
plot(Years, N_Sel_Dif,'g-^' ,'MarkerEdgeColor','k','MarkerFaceColor','g')
hold on
set(gca, 'ytick', -200:25:400);
%OTHER PLOTS
load('PALINE_GIULIA_DELTA');
TYear = T.Year; TYear.Format = 'yyyy';
errorbar(TYear, T.Var4(:,1), T.Var3(:,1), '.r', 'MarkerSize', 6)
hold on
% plot(T.Year(:,1),[NEW(:,1), T.Var4(:,1)]);
hold on
xlabel('Time');
ylabel('Height(mm)');
title('Giulia AWS and Stakes')
%error bar with different colors
errorbar(TYear(1:3696,1),T.Var4(1:3696,1),T.Var3(1:3696,1),'.r','MarkerSize',6,'DisplayName','Stakes'); hold on
hold on
errorbar(TYear(4406:4771,1),T.Var4(4406:4771,1),T.Var3(4406:4771,1),'.b','MarkerSize',6,'DisplayName','Stakes');
hold on
errorbar(TYear(4772:4880,1),T.Var4(4772:4880,1),T.Var3(4772:4880,1),'.r','MarkerSize',6);
hold on
errorbar(TYear(4881:7722,1),T.Var4(4881:7722,1),T.Var3(4881:7722,1),'.b','MarkerSize',6);
hold on
%plot(T.Year(:,1),[NEW, T.Var4(:,1)],'g');
xlabel('Time')
ylabel('Height(mm)');
title('Giulia');
load('DATI_MAR_ANNUALI');
load('DATA_ECM');
DYMAR = datetime(DATIMARannuali.Year,1,1);
plot(DYMAR(20:end), DATIMARannuali.SMB_mp_mm(20:end,1),'--co', 'MarkerEdgeColor','k','MarkerFaceColor','c', 'DisplayName','MAR');
hold off
hold on
DYCMWF = datetime(DATIECMWFannuali.Year,1,1);
plot(DYCMWF, DATIECMWFannuali.SMB_mp_mm,'m-*', 'DisplayName','ECMWF');
legend('Location','best')
hold on
更多回答(1 个)
DGM
2021-8-25
errorbar() doesn't support datetime inputs. You'll end up needing to avoid that, which might complicate things a bit:
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Graphics Performance 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!