根据调度方案绘制Gant图
step1:熟悉绘图命令
line([1 2],[4 4])%画出一条直线
结果如下图
那么我们画Gant图是要有一定宽度的 ,那么线的宽度是可以设定的
line([1 2],[4 4],'lineWidth',2)%线宽为2
line([1 2],[4 4],'lineWidth',4)%线宽为4
line([3 4],[4.5 4.5],'lineWidth',2,'color','red')%线宽为2,且颜色为红色
如何指定纵坐标的范围呢
line([1 2],[4 4],'lineWidth',2)%线宽为2
line([1 2],[4 4],'lineWidth',4)%线宽为4
line([3 4],[4.5 4.5],'lineWidth',2,'color','red')%线宽为2,且颜色为红色
ylim([3 6])%限制y坐标的范围
step2:编写根据调度方案数据来进行Gant图绘制的程序
X轴的起点和终点就是调度方案中的开始时间(startime),结束时间(endtime)
Y轴就是机器的编号,机器1纵坐标就是1,机器2纵坐标就是2
step3:对gant图进行美化设计:
纵坐标范围设置,ylim
线条的宽度,属性:linewidth
线条颜色设定不同色,属性:color,
[1]
使用标准颜色实现,
y
,
r
,
b
[2]
使用三元组数据来实现相同作业的甘特图形状为同一种颜色
线条对应的作业编号、工序编号,text()
%根据调度方案绘制甘特图程序
function drawGant(schedule)
rows=size(scheduie,1)%我们先看schedule有多少行
maxMachId=max(schedule(:,2));%确定最大机器编号
mycolor=['r' 'g' 'b' 'y' 'c' 'm']%设定每条线的颜色
figure;
ylim([0 maxMachId+1]);%让图更美观
for i=1:rows %然后每一行画一个图
x=schedule(i,4:5);
y=[schedule(i,2) schedule(i,2)];
line(x,y,‘linwidth’,16,‘color’,mycolor(schedule(i,1)));
procId=schedule(i,3);
jobId=schedule(i,1);
txt=['['int2str(jobId)' 'int2str(procId)']'];
text(mean(x)-1,y(1),txt);
end
这里作业数量是六种,颜色也是六种 ,那如果有多种作业需要换种方法,让颜色随机处理
%根据调度方案绘制甘特图程序
function drawGant(schedule)
rows=size(scheduie,1)%我们先看schedule有多少行
maxMachId=max(schedule(:,2));%确定最大机器编号
jobQty=max(schedule(:,1))%首先找到作业的数量
mycolor=rand(jobQty,3)%随机设定每条线的颜色
figure;
ylim([0 maxMachId+1]);%让图更美观
for i=1:rows %然后每一行画一个图
x=schedule(i,4:5);
y=[schedule(i,2) schedule(i,2)];
line(x,y,‘linwidth’,16,‘color’,mycolor(schedule(i,1),:));%用schedule(i,1)这一行的三个数字作为颜色的三元组
procId=schedule(i,3);
jobId=schedule(i,1);
txt=['['int2str(jobId)' 'int2str(procId)']'];
text(mean(x)-1,y(1),txt);
end