patchline.m File Reference

Plot lines as patches (efficiently) More...

Functions

function p = patchline (xs, ys, varargin)
 Plot lines as patches (efficiently) More...
 
function [ zs , PVs ] = patchline>parseInputs (varargin)
 

Detailed Description

Plot lines as patches (efficiently)

Function Documentation

◆ patchline>parseInputs()

function [zs , PVs ] = patchline>parseInputs (   varargin)

◆ patchline()

function p = patchline (   xs,
  ys,
  varargin 
)

Plot lines as patches (efficiently)

SYNTAX
patchline(xs,ys) patchline(xs,ys,zs,...) patchline(xs,ys,zs,PropertyName,propertyvalue,...) p = patchline(...)

PROPERTIES: Accepts all parameter-values accepted by PATCH.

DESCRIPTION
p = patchline(xs,ys,zs,PropertyName,propertyvalue,...) Takes a vector of x-values (xs) and a same-sized vector of y-values (ys). z-values (zs) are supported, but optional; if specified, zs must occupy the third input position. Takes all P-V pairs supported by PATCH. Returns in p the handle to the resulting patch object.
NOTES
Note that we are drawing 0-thickness patches here, represented only by their edges. FACE PROPERTIES WILL NOT NOTICEABLY AFFECT THESE OBJECTS! (Modify the properties of the edges instead.)

LINUX (UNIX) USERS: One test-user found that this code worked well on his Windows machine, but crashed his Linux box. We traced the problem to an openGL issue; the problem can be fixed by calling opengl software in your <http://www.mathworks.com/help/techdoc/ref/startup.html startup.m>. (That command is valid at startup, but not at runtime, on a unix machine.)

EXAMPLES
%
% Example 1

n = 10; xs = rand(n,1); ys = rand(n,1); zs = rand(n,1)*3; plot3(xs,ys,zs,r.) xlabel(x);ylabel(y);zlabel(z); p = patchline(xs,ys,zs,linestyle,,edgecolor,g,... linewidth,3,edgealpha,0.2);

%% Example 2: (Note "hold on" not necessary here!)

t = 0:pi/64:4*pi; p(1) = patchline(t,sin(t),edgecolor,b,linewidth,2,edgealpha,0.5); p(2) = patchline(t,cos(t),edgecolor,r,linewidth,2,edgealpha,0.5); l = legend(sine(t),cosine(t)); tmp = sort(findobj(l,type,patch)); for ii = 1:numel(tmp) set(tmp(ii),facecolor,get(p(ii),edgecolor),facealpha,get(p(ii),edgealpha),edgecolor,none) end

%

% Example 3 (requires Image Processing Toolbox)
%% (NOTE that this is NOT the same as showing a transparent image on %% of the existing image. (That functionality is %% available using showMaskAsOverlay or imoverlay). %% Instead, patchline plots transparent lines over %% the image.)

img = imread(rice.png); imshow(img) img = imtophat(img,strel(disk,15)); grains = im2bw(img,graythresh(img)); grains = bwareaopen(grains,10); edges = edge(grains,canny); boundaries = bwboundaries(edges,noholes); cmap = jet(numel(boundaries)); ind = randperm(numel(boundaries)); for ii = 1:numel(boundaries) patchline(boundaries{ii}(:,2),boundaries{ii}(:,1),... edgealpha,0.2,edgecolor,cmap(ind(ii),:),linewidth,3); end

Written by Brett Shoelson, PhD brett.nosp@m..sho.nosp@m.elson.nosp@m.@mat.nosp@m.hwork.nosp@m.s.co.nosp@m.m 5/31/2012

Revisions
6/26 Improved rice.png example, modified FEX image.

Copyright 2012 MathWorks, Inc.

See also
patch, line, plot