File Exchange

image thumbnail

colormapline - color-changing 2D or 3D line

version 2.1 (4.38 KB) by

Plot a 2D or 3D line using a specified colormap.

24 Downloads

Updated

View License

% H = colormapline(X,Y,Z,C) Plot a line using a specified colormap
% If Z is given, a 3D plot with coordinates X, Y, Z is created.
% If Z is not given, a 2D plot of Y over X if created.
% If Y and Z are not given, a 2D plot of X over 1:length(X) is created.
% The plotted line uses all colors in a given colormap in ascending
% order. Other than with other functions in File Exchange, the color
% does NOT depend on any coordinate.
% Technically, length(colormap) lines are plotted, each with a different
% color from the colormap in ascending order.
% H is a handle to the complete colored line. It can be used to set
% parameters such as linewidth and linestyle.
% C is optional. If it is specified, it is used as a colormap. To use it
% with a 2D plot, use Z=[] and Y=[] if required;
%
% Examples:
%% 2D plot
% t=0:0.1:10*pi;
% h=colormapline(t.*sin(t),t.*cos(t),[],jet(128));
% set(h,'linewidth',3,'linestyle','--')
%
%% 3D plot
% t=-20*pi:0.1:20*pi;
% h=colormapline(t.*sin(t),t.*cos(t),sin(t),jet(128));
% set(h,'linewidth',3)
%
%% Minimal example (2D plot with one input)
% h=colormapline(1:1000);
%
%% 2D plot using MarkerFaceColor
% t=0:0.1:10*pi;
% h=colormapline3(t.*sin(t),t.*cos(t),[],jet(128));
% set(h,'Marker','o','LineStyle','none')
% Version 2.1, 2016-12-14
% Change from version 2 (2013-01-29):
% - Line property 'MarkerFaceColor' is now also set using the colormap.
% Behaviour of previous versions can be restored by running the
% following line after the call:
% set(H,'MarkerFaceColor','none')
% This change was triggered by Nathan's question from 04 April 2016.

Comments and Ratings (6)

@Nathan: I just uploaded a new version which also sets MarkerFaceColor. This is the only change in the new version.

Thanks! This works great for me

Nathan

Nathan (view profile)

Very nice. Is there anyway to get MarkerFaceColor to be the same as MarkerEdgeColor?

Useok

Useok (view profile)

This is what I'm looking for.
Thanks.

Matteo Niccoli

To get the lightness for jet in my previous snippet, I used this code:
lab2 = colorspace('RGB->Lab',jet(256));
and this submission:
http://www.mathworks.com/matlabcentral/fileexchange/28790-colorspace-transformations

Matteo Niccoli

Works well for me. For eample I used this code:
figure;
j=jet(256);
h=colormapline(1:1:256,lab2(:,1),[],j);
set(h,'linewidth',2.5);
to get the first figure in this post:
http://mycarta.wordpress.com/2014/11/13/new-rainbow-colormap-sawthoot-shaped-lightness-profile/

Updates

2.1

Line property 'MarkerFaceColor' is now also set using the colormap.

1.1

fixed small bugs and slightly enhanced the funtionality

MATLAB Release
MATLAB 8.2 (R2013b)

Download apps, toolboxes, and other File Exchange content using Add-On Explorer in MATLAB.

» Watch video

Win prizes and improve your MATLAB skills

Play today