您是否知道如何在不使用第三方软件的情况下在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');
这不是我想要的,但也许是朝这个方向发展
答案 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')
最后,你有甘特:
<强>更新强>
我的脚本当然是进化而来的,更多的是,在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');
选项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')