Horizontal bar chart / Gantt Chart
10 views (last 30 days)
Alexander Tollinger on 30 Mar 2020
Hey guys I have a simple question,
I have a 5x 3 array with the 1st column representing the project number, 2nd column representing the start time and 3rd col representing the end time.
- Now I just need to plot this in a Gantt Chart.
Heres the script:
T = [1 randi([10 20])
2 randi([10 20])
3 randi([10 20])
4 randi([10 20])
5 randi([10 20])]
D = projectscheduling(T);
And here is the function:
Brief summary of this function.
Detailed explanation of this function.
function [time] = projectscheduling(T)
time = zeros(5, 3);
for i = 2:5
time(1 ,1) = 1;
time(1, 2) = 0;
time(1 , 3) = T(1, 2);
time(i , 1) = T(i , 1);
time(i, 2) = time(i-1, 3);
time(i, 3) = T(i , 2) + time(i, 2);
And here's a pic of what the finished plot should look like:
Jyotsna Talluri on 2 Apr 2020
The vertical axis coordinates should represent project number and bar lengths of each group should be represented by vector of values . Generate these vector of values from your Matrix D as below
Positions=zeros(1,5); % vertical axis coordinates
plotLengths = zeros(5,2);
for i =1:5
Positions(1,i) = D(i,1);
plotLengths(i,1) = D(i,2);
plotLengths(i,2) = D(i,3)-D(i,2);
Draw the bars in the stacked style with the total length of bar of each group equals the sum of elements in the group
H = barh(Positions,plotLengths,'stacked');
Set the visibility of first plot handle of each group to off
More Answers (1)
Alexis Wang on 30 Aug 2022
I just published Gantt chart on File Exchange: https://www.mathworks.com/matlabcentral/fileexchange/116970-gantt-chart?s_tid=srchtitle.
This can take in a datetime vector of start dates and another of end dates. It uses patch instead of barh though, and draws each bar for every task. Feel free to let me know if you have any questions. Hope that helps!