MATLAB Answers

How to change interval unit of x axis

18 views (last 30 days)
Sehoon Chang
Sehoon Chang on 13 Jan 2020
Edited: Meg Noah on 14 Jan 2020
Hi everyone,
I am trying to figure out how to adjust the graph by changing the interval of my X axis.
I made a timetable and both X and Y values have 17300 arrays, X-value being the time interval in 15 minutes of half year.
The graph came out well. However, i wish to adjust the X-axis into hourly interval.
Is there code that adjusts a graph according to a defined inteval of X-axis?
Using the graph as an exmaple that i have made:
it can be seen that the X-axis value goes up to 18000 (15-Min Interval measurements of a half year).
I wish to change X-axis go upto 4380 (hourly Interval measurement of a half year).
I appreciate for your advice and help.
JC

  2 Comments

Meg Noah
Meg Noah on 13 Jan 2020
did you try
xlim([minX maxX]);
?
Sehoon Chang
Sehoon Chang on 13 Jan 2020
Thank you Meg Noah for your comment.
I have tried both
1) set(gca,'xtick',....,'xticklabel',....)
2) xlim([minX maxX]);
However, both codes only restrict or changes the X-Axis Interval, not chaging the graph line.

Sign in to comment.

Accepted Answer

Meg Noah
Meg Noah on 14 Jan 2020
Edited: Meg Noah on 14 Jan 2020
Here's one way
You can do shape downsampling - reshape then sum the lines. I made some data by digitizing yoour plot. It's attached. But use your data for the real plot of course!
load('Halbjahresdauerlinie_15min.mat')
npts = length(Halbjahresdauerlinie_15min.Heizstunden);
if (~mod(npts,4) == 0)
error('unable to downsample because array length needs to be a factor of 4');
end
Leistung = sum(reshape(Halbjahresdauerlinie_15min.Leistung,4,npts/4))';
Leistung = Leistung/4;
Heizstunden = Halbjahresdauerlinie_15min.Heizstunden(1:4:end)/4';
Halbjahresdauerlinie_Daily = table(Heizstunden,Leistung);
figure();
plot(Halbjahresdauerlinie_Daily.Heizstunden,Halbjahresdauerlinie_Daily.Leistung);
xlabel('Heizstunden per day');
ylabel('Leistung in kW');
title('Halbjahresdauerlinie')
You can just down sample the time axis which are 15-min intervals, or you can do mean(reshape(Halbjahresdauerlinie_15min.Heizstunden, 4, npts/4); It depends upon how you want to annotate the time axis for each plot - from the half day or from the start of day...
untitled.png

  0 Comments

Sign in to comment.

More Answers (1)

Eric Sofen
Eric Sofen on 13 Jan 2020
If X is a duration array (X = minutes(0:15:262800)), you plot datetimes or durations directly, and changing the Format property of the duration will change how it displays.
compare
plot(X,Y)
to
X.Format = 'h';
plot(X,Y)

  0 Comments

Sign in to comment.

Sign in to answer this question.