How can I delete this data on the graph?
1 次查看(过去 30 天)
显示 更早的评论
Hello everyone,
for the wind percentage I don't want to plot the 1st value and the last value that you can see in the plot. I tried to replace them with NaN but it didnt' work.
How can I do?
Thank you!
load('giulia_TT.mat')
load('B');
giulia_daily=retime(giulia_TT,'daily',@(x)mean(x,1,'omitnan'));
%giulia_daily=retime(giulia_TT,'daily', @(x)mean(x,1,'omitnan')); %ottiengo i valori giornalieri
dates=datetime({'15 Dec 1998', '07 Dec 1999'; '07 Dec 1999', '30 Nov 2000';'30 Nov 2000','13 Nov 2001';'13 Nov 2001','30 Dec 2002';'30 Dec 2002','4 Jan 2004';'4 Jan 2004','22 Nov 2004';'22 Nov 2004','24 Nov 2005';'24 Nov 2005','15 Dec 2006';'15 Dec 2006','22 Jan 2008'; '22 Jan 2008','22 Jan 2009';'22 Jan 2009','22 Jan 2010';'22 Jan 2010','22 Jan 2011';'22 Jan 2011','22 Jan 2012';'22 Jan 2012','9 Jan 2013';'9 Jan 2013','5 Jan 2014';'5 Jan 2014','31 Jan 2015';'31 Jan 2015','31 Jan 2016';'31 Jan 2016','31 Jan 2017';'31 Jan 2017','25 Jan 2018';}, 'InputFormat','dd MMM yyyy'); % crei tabella con le coppie di date
date_len=[] % inizializzo il vettore che conta quanti giorni intercorrono tra le due date
for i=1:length(dates) % per ogni coppia di date
a=dates(i,2)-dates(i,1); %differenza(in ore) tra le due date
date_l(i)=days(a); % la transforma in giorni
date_len=date_l' % la aggiunge al vettore in modo da ottenere un vettore con tutte le differenze
end
year_values=[] % inizializza
for i=1:length(dates)
date_a=dates(i,1); %prima data
date_b=dates(i,2); %seconda data
pos_a=find(giulia_daily.Time==date_a); %trovo la posizione della prima data in giulia_daily
pos_b=find(giulia_daily.Time==date_b); % uguale con la seconda
values_ab=B(pos_a:pos_b)*3.5; %prende tutti i valori tra le due date
mean_ab=mean(values_ab,1,'omitnan'); %fa la media
year_values(i)=mean_ab; % la aggiunge al vettore dei valori annuali
end
year_values=year_values'
year_values_wind=[] % inizializza
for i=1:length(dates)
date_a=dates(i,1); %prima data
date_b=dates(i,2); %seconda data
pos_a=find(giulia_daily.Time==date_a); %trovo la posizione della prima data in giulia_daily
pos_b=find(giulia_daily.Time==date_b); % uguale con la seconda
values_ab=giulia_daily.Var2(pos_a:pos_b); %prende tutti i valori tra le due date
mean_ab=mean(values_ab,1,'omitnan'); %fa la media
year_values_wind(i)=mean_ab; % la aggiunge al vettore dei valori annuali
end
year_values_wind=year_values_wind'
year_perc_wind=[] % inizializza
for i=1:length(dates)
date_a=dates(i,1); %prima data
date_b=dates(i,2); %seconda data
pos_a=find(giulia_daily.Time==date_a); %trovo la posizione della prima data in giulia_daily
pos_b=find(giulia_daily.Time==date_b); % uguale con la seconda
values_ab=giulia_daily.Var2(pos_a:pos_b); %prende tutti i valori tra le due date
values10=values_ab(values_ab>=10);
year_perc=length(values10)/length(values_ab)*100;
year_perc_wind(i)=year_perc% la aggiunge al vettore dei valori annuali
end
year_perc_wind=year_perc_wind'
DateA=dates(:,1); % si crea una tabella in cui ho data1, data2, valore media
DateB=dates(:,2);
Year_Values=year_values;
giulia_year=table(DateA,DateB,Year_Values,year_values_wind,year_perc_wind)
%%%% Calcoliamo la differenza
diff_values=[]
for i=2:length(dates)
val_a=giulia_year.Year_Values(i-1);
val_b=giulia_year.Year_Values(i);
diff_ab=val_b-val_a;
diff_values(i)=diff_ab;
end
diff_values(1)=NaN;
Diff_Values=diff_values';
giulia_year=table(DateA,DateB,Year_Values,Diff_Values,year_values_wind,year_perc_wind);
plot(giulia_year.DateA, giulia_year.year_perc_wind, '-*', 'Color','g', 'MarkerFaceColor','g')
grid
0 个评论
采纳的回答
Peter Perkins
2021-11-26
This is a lot of code that I just can't follow. I will suggest that a loop l;ike this
for i=1:length(dates) % per ogni coppia di date
a=dates(i,2)-dates(i,1); %differenza(in ore) tra le due date
date_l(i)=days(a); % la transforma in giorni
date_len=date_l' % la aggiunge al vettore in modo da ottenere un vettore con tutte le differenze
end
is easily replaced by one line:
datelen = caldays(dates(:,2) - dates(:,1))
or even
datelen = caldays(diff(dates,[],2))
Doing this will make you code much easier to read. Notice that I've used caldays: at some point you may end up using time zones, at which point days (i.e. 24hrs) will not give the right answer.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Line Plots 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!