How can I delete this data on the graph?
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
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 Commenti
Risposta accettata
Peter Perkins
il 26 Nov 2021
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.
Più risposte (0)
Vedere anche
Categorie
Scopri di più su 2-D and 3-D Plots in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!