matlab 甘特图
时间: 2023-10-11 15:14:36 浏览: 31
根据提供的代码,可以使用Matlab生成甘特图来表示作业调度问题。在给定的代码中,使用了不同的颜色来表示不同的作业。你可以根据需要修改colorList数组来定义自己想要的颜色。代码中的循环将每个矩形的颜色设置为colorList中对应的颜色,从而实现了作业的区分。
此外,你还可以根据需要修改ax.YTickLabel数组来定义Y轴的标签。
相关问题
matlab程序甘特图
你可以使用以下的MATLAB程序来生成甘特图。
```matlab
startT = [0 3 5 12 16,1.5 6 8 15 18,3 10 11 16 19,2 4 11 13 15,1 3 7 16 18,5 11 14 16 20];
durationT = [3 2 5 4 4,4 1 7 2 5,6 1 4 3 2,1 6 2 2 9,2 3 4 2 5,5 3 1 2 8];
jobId = [1 1 1 1 1,2 2 2 2 2,3 3 3 3 3,4 4 4 4 4,5 5 5 5 5,6 6 6 6 6];
GTC = ganttChart(startT,durationT,jobId);
colorList = [204,154,129;222,191,170;185,184,163;165,165,139;107,112,92]./255;
for i = 1:max(jobId)
tHdl = GTC.(['p',num2str(i)]);
for j = 1:length(tHdl)
set(tHdl(j),'FaceColor',colorList(j,:))
end
end
ax = gca;
ax.YTickLabel = {'S-1-1','S-1-2','S-2-1','S-2-2','S-3-1','S-3-2'};
```
这段程序中,`startT`表示每个任务的开始时间,`durationT`表示每个任务的持续时间,`jobId`表示每个任务的编号。首先,使用`ganttChart`函数生成一个初始的甘特图对象。然后,使用循环为每个任务修改颜色,根据`jobId`选择对应的颜色。最后,通过设置`ax.YTickLabel`来修改y轴刻度标签为对应的任务标识。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [基于遗传算法的车间调度算法-matlab源码(含甘特图)](https://download.csdn.net/download/m0_59415345/85425314)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *2* *3* [MATLAB | 如何使用MATLAB绘制甘特图(gantt chart)](https://blog.csdn.net/slandarer/article/details/127469719)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
matlab画甘特图
在Matlab中,可以使用patch函数来画甘特图。首先,需要定义每个工件的开始时间和结束时间,以及每个工件对应的机器和颜色。然后,使用循环来创建每个工件的矩形,并设置其颜色。最后,设置横纵坐标的范围和标签,以及图表的样式。
以下是一个示例代码:
```matlab
a=\[0 0 0 5; 1 0 5 49; 2 0 49 145; 0 1 5 22; 1 1 49 135; 2 1 145 177; 0 2 22 94; 1 2 135 189; 2 2 189 225; \]; % 定义工件的开始时间和结束时间
color=\[192,90,42; 66,212,203; 130,150,80; \]; % 定义颜色数组
figure(1);clf; % 创建图表
w=0.6; % 横条宽度
set(gcf,'color','w'); % 设置背景颜色
for ii=1:size(a,1)
x=a(ii,\[3 3 4 4\]);
y=a(ii,1)+\[-w/2 w/2 w/2 -w/2\]+0.9;
p=patch('xdata',x,'ydata',y,'facecolor',\[color(a(ii,2)+1,1)/255,color(a(ii,2)+1,2)/255,color(a(ii,2)+1,3)/255\],'edgecolor','k');
text(a(ii,3)+1,a(ii,1)+0.9,num2str(a(ii,2)),'FontSize',13);
end
xlabel({'Makespan'},'FontSize',14,'FontWeight','bold');
ylabel({'Machine'},'FontSize',14,'FontWeight','bold');
axis(\[0 250 0 4\]); % 设置横纵坐标范围
set(gca,'FontSize',12) % 设置横纵坐标大小
set(gca,'Box','on'); % 设置右上边框
set(gca,'YTick',0:4);
set(gca,'YTickLabel',{'';num2str((1:3)','M%d');''});
```
这段代码会生成一个甘特图,横轴表示作业的完成时间,纵轴表示机器。每个工件用一个矩形表示,矩形的颜色表示不同的工件。
#### 引用[.reference_title]
- *1* [MATLAB画甘特图](https://blog.csdn.net/root_zhb/article/details/114155938)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* [matlab画甘特图(用任意多颜色表示任意多工件)](https://blog.csdn.net/dfb198998/article/details/49785279)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item]
- *3* [MATLAB | 如何使用MATLAB绘制甘特图(gantt chart)](https://blog.csdn.net/slandarer/article/details/127469719)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]