Matlab 画图修饰-随机线条和随机颜色

转载自:http://www.zhaoyanpeng.cn/archives/237

当需要对同一曲线不同参数下进行模拟时需要不同的颜色来加以区分:

1
2
3
4
5
6
7
x=-2:0.0001:2;
fori=0:0.2:8
    y=i*x.^2;
    plot(x,y,'color',[rand rand rand]);
    hold on;
end
grid;

上例根据RGB颜色,来实现不同颜色曲线的组合,考虑到matlab画图中,颜色分量是以1/255的步长变化的,但是相邻颜色过于接近,因此我们可以选取rand随机数的形式,来实现颜色的随机变化;

延伸:MATLAB有一个叫颜色映象的数据结构来代表颜色值。颜色映象定义为一个有三列和若干行的矩阵。利用0到1之间的数,矩阵的每一行都代表了一种色彩。任一行的数字都指定了一个RGB值,即红、黄、蓝三种颜色的强度,形成一种特定的颜色。

当然,你也可以考虑下面的方法:

1
2
3
4
5
6
7
8
9
10
x=-2:0.0001:2;
coArray=['y','m','c','r','g','b','w','k'];%初始颜色数组
fori=0:0.2:4
    y=i*x.^2;
    coPos=randi([1,length(coArray)],1,1);%随机选取颜色
    coVal=coArray(coPos);%取得随机颜色
    plot(x,y,coVal);
    hold on;
end
grid;

不同颜色,不同线条的随机组合.其实,对于上述构造颜色数组的方法,可以类比到随机线条的描绘,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
x=-2:0.1:2;
coArray=['y','m','c','r','g','b','w','k'];%初始颜色数组
liArray=['o','x','+','*','-',':','-.','--','.'];%初始线条数组
fori=0:0.2:4
    y=i*x.^2;
    liPos=randi([1,length(liArray)],1,1);%随机选取线条
    liVal=liArray(liPos);%取得随机线条
    coPos=randi([1,length(coArray)],1,1);%随机选取颜色
    coVal=coArray(coPos);%取得随机颜色
    plot(x,y,[coVal liVal]);
    hold on;
end
grid;

延伸:
(一)颜色映像的使用

语句colormap(M)将矩阵M作为当前图形窗口所用的颜色映象。例如:colormap(cool)装入了一个有64个输入项的cool颜色映象。colormap default装入了缺省的颜色映象(hsv);

函数plot、plot3、contour和contour3不使用颜色映象,它们使用列在plot颜色和线形表中的颜色。而大多数其它绘图函数,比如mesh、surf、fill、pcolor和它们的各种变形函数,使用当前的颜色映象;

接受颜色参量的绘图函数中的颜色参量通常采用以下三种形式之一:(1)字符串:代表plot颜色或线型表中的一种颜色,比如’r ‘代表红色;(2)三个输入的行向量:它代表一个单独的RGB值,比如[.25 .50 .75];(3)矩阵:如果颜色参量是一个矩阵,其元素作了调整,并把它们用作当前颜色映象的下标;

(二)颜色映像的显示

数值显示方法:如hot(8);

图示显示方法:如pcolor函数;

1
2
3
4
5
6
colormap(hot(8));
pcolor([1:8+1;1:8+1]');
%或者竖直颜色方图
colormap(hot(8));
pcolor([1:8+1;1:8+1]);
%注意:最后一种颜色为白色

函数colorbar在当前的图形窗口中增加水平或垂直的颜色标尺以显示当前坐标轴的颜色映象。colorbar(“horiz’) 在当前的图形下面放一个水平的颜色条。colorbar(‘vert’) 在当前的图形右边放一个垂直的颜色条。对无参量的colorbar,如果当前没有颜色条就加一个垂直的颜色条,或者更新现有的颜色条。

1
2
3
4
5
[x,y,z]=peaks;
mesh(x,y,z);
colormap(hsv);
axis([-3 3 -3 3 -6 8]);
colorbar;

参考:《精通MATLAB-十九章-颜色的使用》

你可能感兴趣的:(MATLAB)