Code covered by the BSD License

### Highlights from cline

4.85714
4.9 | 7 ratings Rate this file 35 Downloads (last 30 days) File Size: 8.38 KB File ID: #14677 Version: 1.0

# cline

### Sebastian Hölz (view profile)

16 Apr 2007 (Updated )

Draw a colored line in 2D or 3D

File Information
Description

There are several files on the FEX which deal with the plotting of colored lines, but they all have some drawbacks. I wrote a little file, which extends the scope of the submission by Kun Liu (s. below, hoping to deliver a general purpose file, which should work for most purposes.

SYNTAX
======
h = cline(x, y [, z, cdata])

INPUT
=====
x: vector with x-values
y: vector with y-values
z (opt.): vector with z-values
cdata (opt.): vector with color-data

2 input arguments => cdata = y; z=0
3 input arguments => cdata = z
4 i.a. & z = [] => cdata = y; z=0

OUPUT
=====
h: Handle to line (i.e. patch-object !!!)

Examples
========
t = 2*pi:.1:8*pi;

cline(sqrt(t).*sin(t), sqrt(t).*cos(t));
cline(sqrt(t).*sin(t), sqrt(t).*cos(t), t);
cline(sqrt(t).*sin(t), sqrt(t).*cos(t), t, rand(size(t))); view(3)
cline(sqrt(t).*sin(t), sqrt(t).*cos(t), [], rand(size(t))); view(3)

OK, hope you find this file useful

Sebastian

Acknowledgements

Linear 2 D Plot With Rainbow Color inspired this file.

This file inspired Perceptually Improved Colormaps.

MATLAB release MATLAB 7.0.4 (R14SP2)
Other requirements none
01 Apr 2016 Sebastian Hölz

### Sebastian Hölz (view profile)

@Dennis: Simple solution:

h = cline(...);
set(h,'Marker','.','LineStyle','none')

Sebastian

Comment only

Hi Dennis,
If we replace line 82 with
set(p,'cdata', cdata, 'marker', 's', 'edgecolor','interp')
, it will also plot the points.
However, I do not know how to only plot the points and not the line. Maybe Sebastian can comment on his great function.
Thanks.
M

Comment only
12 Aug 2015 Dennis Honkanen

### Dennis Honkanen (view profile)

Great function,

Is it possible to obtain dots instead of a line?

Regards, Dennis.

01 Feb 2015 William Silva

### William Silva (view profile)

14 Jan 2014 alessandro

### alessandro (view profile)

Nice function.
Answering to Xavi Alonso (even if comment is quite old), you could insert a matrix mx3 just be reshaping cdata in a way you have mx1x3.
Indeed I have modified cline function replacing rows 76-81 with:

elseif nargin == 4
if isempty(z); z = zeros(size(x)); end
p = patch([x(:); nan], [y(:); nan], [z(:); nan], 0);
cdata = [cdata;nan nan nan];
newcdata=reshape(cdata,size(cdata,1),1,size(cdata,2));
end

it is not optimized maybe but however it worked for me.
Hope this help

Cheers,
Alessandro

12 May 2011 Sebastian Hölz

### Sebastian Hölz (view profile)

@Jaap:

Use the following syntax:

fig = figure;
h = cline(...);
set(h,'linewidth',5)

The increased line-width will not be displayed, if you use "painters" as renderer for your figure. Therefore, you will have to change it:

set(fig, 'renderer', 'zbuffer')

- or -

set(fig, 'renderer', 'opengl')

Cheers

Sebastian

Comment only
06 May 2011 Jaap

### Jaap (view profile)

Thanks for the post, I find it very useful. Do you perhaps know a way to increase the thickness of the line? Adding filled circular patch markers does do something, but the markersize makes a very sharp transition at 4.8-4.9.

Comment only
05 May 2011 Natasha

### Natasha (view profile)

Great, works perfectly, thanks

15 Oct 2010 Matteo Niccoli

### Matteo Niccoli (view profile)

This is really a great submission. I can think of vaery many ways of using it.

For starters, in conjunction with Colorspace transforamtions
( www.mathworks.com/matlabcentral/fileexchange/28790-colorspace-transformations ) I used it for an example in my Perceptually improved colormaps submission. I used cline this way:

% J=jet(256);
% LJ=colorspace('RGB->Lab',J);
% figure; cline([1:1:256],LJ(:,1),LJ(:,1),[1:1:256],J);
% title ('L* plot for jet colormap','Color','k','FontSize',12);

Also, as I was reading Steve's post on Lab based colormaps (thank you Steve!), I used cline this way to help me visualize things (notice again I used colorspace):

% theta = linspace(0, pi/2, 256).';
% a = radius * cos(theta);
% b = radius * sin(theta);
% L = linspace(0, 100, 256).';
% Lab = [L, a, b];
% RGBhlx=colorspace('RGB<-Lab',(Lab));
% figure; cline(a, b, L, L,RGBhlx); view(3);
% VIEW(-165,-15);

12 Oct 2010 Sean Torrez

### Sean Torrez (view profile)

Beautiful file, thanks a bunch. Quite simple, works well.

19 Feb 2010 Xavi Alonso

### Xavi Alonso (view profile)

it doesn't work for me when cdata is a matrix

Comment only
26 Jun 2007 Matt Bennett