Plotting of 15 years data on same graph.

7 views (last 30 days)
I have data of 15 years as i have attached here, which has the format as: Date, time, Pressure data, Temperature Data.
I want to plot the temperature dataset year over year, lets say on x-axis january-december is labeled i want to plot each year data (just Temperature) with different colored plots on the same graph.
Thanks in advance

Accepted Answer

meghannmarie
meghannmarie on 11 Dec 2019
Try something like this:
fid = fopen('Mod21_All_Inclusive_Data_Nov2019.txt');
Mod = textscan(fid,'%s %s %n %n');
fclose(fid); % Close the file
Temp = Mod{3};
DMY =cellstr(Mod{1});
HM = cellstr(Mod{2});
DMYHM = datetime(DMY,'InputFormat','MM/dd/yy') + duration(HM,'InputFormat','hh:mm');
Y = year(DMYHM);
yrs = unique(Y);
x_axis = day(DMYHM,'dayofyear') + (hour(DMYHM) + (minute(DMYHM)/60))/24;
fig = figure;
hold on
for t = 1:numel(yrs)
yr = yrs(t);
idx = yr == Y;
plot(x_axis(idx),Temp(idx));
end
XTicks = nan(1,12);
XTickLabels = cell(12,1);
for n = 1:12
dt = datetime(2019,n,01);
XTicks(n) = day(dt,'dayofyear');
XTickLabels(n) = month(dt,'name');
end
ax = gca;
ax.XTick = XTicks;
ax.XTickLabel = XTickLabels;
fclose(fid);
  8 Comments
dpb
dpb on 12 Dec 2019
"If you do not like those long lines connecting the data gaps, you can identify the data gaps and plot those lines separately."
Or fill missing data w/ NaN and will be silently ignored by plot. Still takes finding the breakpoints but would keep one line handle per year for things like legend, linestyle etc., ...
Zunaira Akmal
Zunaira Akmal on 13 Dec 2019
Thank you very much meghannmarie for your answer, it has solved my problem.
Kind regards

Sign in to comment.

More Answers (1)

Hiro Yoshino
Hiro Yoshino on 11 Dec 2019
Convert the date information to datetime type and extract just "months" and "days" using the functions, "month" and "day".
This way, you can remove "year" information from your dataset and thus you can line them up in the same x-axis.
  6 Comments
dpb
dpb on 11 Dec 2019
Use the new_timedata vector as x, the array of data by column as y and plot will automagically do the rest...
Have you tried anything? This is a cooperative venture, show us what you have done.
Zunaira Akmal
Zunaira Akmal on 11 Dec 2019
Edited: per isakson on 13 Dec 2019
If i do what you said then it will give me a plot of my complete dataset which i do not want, i want to plot data year by year, lets say first year temperature data with red color, 2nd year tempearture data with blue color and so on, i hope you are getting my point.
Yes, i have tried to plot using the code below, but now the problem is how can i extract data correspeonding to the respective data of temperature.
fid = fopen('Mod12_All_Inclusive_Data_Nov2019.txt');
Mod = textscan(fid,'%s %s %n %n');
fclose(fid); % Close the file
Temp = Mod{3};
Year=Mod{1};
Year2=year(Year);
length(Year2);
[a,b] = histc(Year2,unique(Year2));

Sign in to comment.

Categories

Find more on Dates and Time in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!