彭真明
MATLAB绘图技巧-颜色渐变折线图
2024-1-31 16:29
阅读:2599

MATLAB绘图的美观,除了科研绘图的规范性,用好颜色也可以为作图质量加分。对于多条曲线,主要设定不同类型线条的颜色,单条曲线为单一颜色。有时候只有一条曲线时,我们需要对于不同的数据区间或数据范围设定不同的颜色来加以区分和表示。这就需要设定随数据变化的颜色表达。

对于随数据(自变量-x轴)区间的颜色渐变,相对容易实现。如果随着数据(因变量-y轴)值域的颜色渐变,则需要数值构建与颜色查找表(colormap)的对应关系,即寻找一个数值与颜色的映射关系。

以下给出一个实际绘图实例,可以通过加载磁盘数据,也可通过设定仿真数据运行程序。以下代码,可供参考。

clc; clear; close all;

% --------------------

% Load data from disk

load plotData.mat;

y = data;

% --------------------

% Give data

% n = 100;

% x = linspace(0, 4*pi, n);

% T = pi;  % Period

% A = 5;   % Amplitude

% y = A*sin(2*pi*x/T)+randn(1,n);

 

% Set Colormap.

N = length(y);

color = hsv(N);

%color = jet(N);

%color = dipCM(76,N); % Custom

colormap(color); 

% Plot sample data.

subplot(2,1,1)

for k = 1:N-1

  plot(k:k+1, y(k:k+1),'LineWidth',2.4,'Color',color(k,:))

  hold on

end

colorbar

caption = sprintf('Line color varies along x-axis.' );

title(caption, 'FontSize', 12);

xlabel('Time'),ylabel('Value')

defualtAxes

 

% Rescale the data of y-axis

normy = (y - min(y)) ./ (max(y) - min(y));

coloridx = ceil(1+normy*(N-1));

subplot(2,1,2)

for k = 1:N-1

  plot(k:k+1, y(k:k+1),'LineWidth',3,'Color',color(coloridx(k),:))

  hold on

end

colorbar

caption = sprintf('Line color varies along y-axis.' );

title(caption, 'FontSize', 12);

xlabel('Time'),ylabel('Value')

set(gca,'FontName','Times New Roman','FontSize',12)

defualtAxes

程序运行结果如图B1-1所示,为实际数据分布。

colorGradplots.png

图B1-2 沿X、Y轴颜色渐变的折线图,上:沿X轴变化,下:沿Y轴变化

colorGradplots1.png

图B1-2 仿真数据分布(颜色替换)

另外,通过选用MATLAB提供的colormap,可以得不同的颜色效果。当然,也可以自行定制颜色查找表。

end.jpg

my2dcode.png

长按/扫一扫二维码,敬请关注“闻道研学”

参考来源:

[1]【高级绘图】绘制分段颜色折线图

[2] 让颜色对应数值,MATLAB colormap

[3] 数据下载:https://pan.baidu.com/s/1qAS1XT-4d3Xm3A1q0XZaug?pwd=74ze  提取码:74ze

相关博文: 

[1] MATLAB绘图技巧-折线图绘制

[2] MATLAB绘图技巧-颜色渐变柱状图绘制

转载本文请联系原作者获取授权,同时请注明本文来自彭真明科学网博客。

链接地址:https://wap.sciencenet.cn/blog-425437-1420058.html?mobile=1

收藏

分享到:

当前推荐数:6
推荐到博客首页
网友评论0 条评论
确定删除指定的回复吗?
确定删除本博文吗?