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')
你知道如何不用第三方软件在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')