Matlab 中的甘特图

Gantt Chart in Matlab

你知道如何不用第三方软件在Matlab中绘制甘特图吗? 最后我很想获得这样的东西:

目前我能得到的是

使用此代码:

% Create data for childhood disease cases
measles = [38556 24472 14556 18060 19549 8122 28541 7880 3283 4135 7953 1884]';
mumps = [20178 23536 34561 37395 36072 32237 18597 9408 6005 6268 8963 13882]';
chickenPox = [37140 32169 37533 39103 33244 23269 16737 5411 3435 6052 12825 23332]';

% Create a stacked bar chart using the bar function
fig = figure;
bar(1:12, [measles mumps chickenPox], 0.5, 'stack');
axis([0 13 0 100000]);
title('Childhood diseases by month');
xlabel('Month');
ylabel('Cases (in thousands)');
legend('Measles', 'Mumps', 'Chicken pox');

这不是我想要的,但也许会朝这个方向发展

在这里,我分享一下我刚刚找到的解决方案(也许它不是最优雅的,但它可以满足我的目的):

[主要思路是画一个条,"delete"开始透支上去再画一个白条]

假设您有两个向量:

start =[6907402; 2282194; 4579536; 2300332; 10540; 2307970; 4603492; 0];

stop =[9178344; 9168694;6895050; 4571400; 2280886; 4579044; 6897152 ;2271186];

每个元素有8个元素:每个元素都是一个任务。在 start 数组中,有每个任务的开始时间,在 stop 中,有给定任务的 "execution" 结束时间。

barh(stop)
hold on
barh(start,'w')

最后是甘特图:

更新:

我的脚本当然是进化了,更多,在matlab website上,有更多的信息。这里还有2个例子来完成答案:

选项 1:

Positions=[1,2,3,4];
Gap_Duration=[0,2,5,3,5,3;
              3,5,3,5,3,4;
              9,3,0,0,12,2;
              13,2,2,2,8,3];
barh(Positions,Gap_Duration,'stacked');

选项 2:

Positions=[1,2,3,4];
Gap_Duration=[0,2,5,3,5,3;
              3,5,3,5,3,4;
              9,3,0,0,12,2;
              13,2,2,2,8,3];
barh(Positions,Gap_Duration,'stacked');
set(H([1 3 5]),'Visible','off')