1. 问题介绍
在使用matlab或者Octave进行曲线绘制时,有时候我们需要在for循环中依次绘制曲线的图形,为了将不同的曲线进行区分,需要将其用不同的颜色表示。
这里使用了colormap来对不同的曲线设置不同的颜色。
2. colormap
colormap% 查看并设置当前颜色图全页折叠
语法:
colormap map% 将当前图窗的颜色图设置为预定义的颜色图之一。colormap(map)% 将当前图窗的颜色设置为map指定的颜色图colormap(target,map)% 为target指定的图窗、坐标区或图形设置颜色图,而不是为当前图窗设置颜色图cmap = colormap% 返回当前图窗的颜色图,形式为RGB三元组成的三列 矩阵cmap = colormap(target) % 返回target指定的图窗 、坐标区或图的颜色图
3. 在for循环中依次绘制不同颜色的曲线
问题:在for循环中使用plot依次绘制多条曲线,每条曲线的图例和颜色个并不相同。
解决方案:使用colormap进行不同颜色曲线的绘制,使用数组h来设置不同的图例。
步骤:
首先确定曲线的数量,然后使用colormap确定颜色比例使用 colormap(N); 来确定总的颜色条数(此时使用的为RGB三色来确定颜曲线色)在进行绘制时,使用color来确定曲线颜色:如plot(x, y, ‘color’, c(i, : ));如果相要为每条曲线添加不同的图例,则可以定义一个元组h,然后每绘制一条曲线,就在元组中添加一组图例。
clc, clear;close all;% 绘制多条正弦函数lineLength = 10; % 设置曲线数量c = colormap(lines(lineLength )); % 为了在一个图中绘制多条曲线h = {'aaa'}; % 设置图例元组,这里数量不定,我设置大小为1% 在for循环中绘制lineLength条正弦函数for i = 1:1:lineLengthx1 = 2*pi + (i-1)*pi/lineLength; % 每次设置pi/lineLength个周期的大小x2 = -2*pi + (i-1)*pi/lineLength;x = linspace(x1,x2);y = sin(x);figure(1);plot(y,'color', c(i,:), 'LineWidth', 2);hold on;STR = sprintf('k = %d', i);h(i) = cellstr(STR); % 使用cellstr将STR转化为cell数组legend(h, 'location', 'SouthEast');xlabel('x');ylabel('y');title('y = sin(x)');end
结果(使用Octave进行绘制):
4. 示例:
% 1. 更改图窗的颜色图,创建一个曲面图并将颜色图设置为 winter。surf(peaks)colormap winter
% 2. 将颜色图设置回默认值% 2.1 首先,将当前图窗的颜色图更改为 summer。surf(peaks)colormap summer% 2.2 现在将颜色图设置回您系统的默认值。如果您尚未指定不同默认值,则默认颜色图是 parula。colormap default
参考:官方colormap