Histogram plot by equal time intervals
7 views (last 30 days)
Show older comments
Dear all,
I have with my the attached dataset that I will like to plot in an equal interval time histogram.
Below here is my code:
clc
A = load ('TutorialSampleT.txt');
Time = A (:,1) ;
x = A (:,2 ) ;
y = A (:,3 ) ;
z = A (:,4 ) ;
Amplitude = A (:,5) ;
%define no of bins
noOfBins=min(Time):0.90:max(Time);
%plot histogram
histogram(Time,numel(noOfBins));
timeFormat=noOfBins;
timeFormat=timeFormat/24;
la=datestr(timeFormat,'HH:MM')
xticks(noOfBins);
xticklabels({la});
And the results:![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/953154/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/953154/image.png)
I will be very happy if I can get some assistance with changing the time intervals to something more unifrom (an hour or 2 interval time will be perfect).
Thank you.
0 Comments
Accepted Answer
Voss
on 5 Apr 2022
clc
A = load ('TutorialSampleT.txt');
Time = A (:,1) ;
x = A (:,2 ) ;
y = A (:,3 ) ;
z = A (:,4 ) ;
Amplitude = A (:,5) ;
% interval in hours:
% interval = 0.9;
% interval = 1;
interval = 2;
%define no of bins
noOfBins=min(Time):interval:max(Time);
%plot histogram
% histogram(Time,numel(noOfBins));
histogram(Time,numel(noOfBins)-1); % number of bins in the histogram is one less than numel(noOfBins), i.e., noOfBins defines the bin edges
timeFormat=noOfBins;
timeFormat=timeFormat/24;
la=datestr(timeFormat,'HH:MM');
xticks(noOfBins);
xticklabels({la});
More Answers (1)
Steven Lord
on 5 Apr 2022
Rather than specifying the number of bins you could specify the bin edges explicitly.
minutesPerDay = minutes(days(1));
T = datetime('today');
dt = T + minutes(randi(minutesPerDay, 1, 1000));
edges = T + hours(0:2:24);
histogram(dt, edges)
xticks(edges)
See Also
Categories
Find more on Labels and Annotations 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!