Matlab中的甘特图

时间:2017-05-03 10:25:39

标签: matlab gantt-chart

您是否知道如何在不使用第三方软件的情况下在Matlab中绘制甘特图? 最后,我希望得到这样的东西:

enter image description here

到目前为止我能够获得的是

enter image description here

使用此代码:

% 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');

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

1 个答案:

答案 0 :(得分:0)

在这里,我分享了我刚刚找到的解决方案(也许它不是最优雅的解决方案,但它适用于我的目的):

[主要的想法是绘制一个栏并“删除”开头透支在另一个白色栏上]

假设您有两个向量:

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

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

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

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

最后,你有甘特:

enter image description here

<强>更新

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

选项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');

enter image description here

选项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')

enter image description here