||
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所示,为实际数据分布。
图B1-2 沿X、Y轴颜色渐变的折线图,上:沿X轴变化,下:沿Y轴变化
图B1-2 仿真数据分布(颜色替换)
另外,通过选用MATLAB提供的colormap,可以得不同的颜色效果。当然,也可以自行定制颜色查找表。
长按/扫一扫二维码,敬请关注“闻道研学”
参考来源:
[3] 数据下载:https://pan.baidu.com/s/1qAS1XT-4d3Xm3A1q0XZaug?pwd=74ze 提取码:74ze
相关博文:
[1] MATLAB绘图技巧-折线图绘制
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-12-27 10:36
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社