File Exchange

image thumbnail

hatch.m

version 1.0 (8.01 KB) by

Create cross-hatched filled regions.

4.26316
19 Ratings

61 Downloads

Updated

No License

This is an old file by Kirill K. Pankratov thaat used to be on the file exchange. I've updated it to run on Matlab 5+.

Comments and Ratings (23)

da121da

Ahmed raafat

thanks

Bernhard

JanianC

Useful

chen rui

Lao Li

Lao Li (view profile)

yipeng Wang

yang_jun1219

good job

Qingli Dong

good job

Bruce Wang

good job

rong zhang

xianlong liu

good job, could be a good idea

Matteo

Matteo (view profile)

The code works pretty well. I cannot get it to work with the legend, though.
Here what I am trying:

PLOT:
figure
h=bar(ones(2,2))
hp = findobj(h,'type','patch');
hatch(hp(1),45,'k','-',4,2);

LEGEND:
lg=legend(h,{'One','Two'});
lgp=findobj(lg,'type','patch');
hatch(lgp(1),45,'k','-',2,1.5);

Any suggestion?

Yu-Heng

This is to my knowledge the best function to use if you hatch patches need to have 'holes' in them (e.g. a torus-shaped hatch patch). Works on R2014a.

When I plotted complex hatch plots, there would be dotted lines running across different hatch patches. This is fixed by inserting the following code immediately after the "Organize to pairs and separate by NaN's" block:

% Remove point line segments (i.e. segment of the form (a,b) to (a,b)
i_same = find(diff(xi)<eps('single')); % find the first index of each point
i_remove = repmat(i_same,[3 1]) + repmat((0:2)',[1 length(i_same)]);
xi(i_remove) = [];
yi(i_remove) = [];

This amendment removes hatch lines shorter than 1E-7 unit long (essentially what those dotted lines are).

Neil Dalchau

Generally works, but could not get the angle to work. I'm using Matlab on Windows 7, 32-bit.

Scott Beaver

This didn't work for me-- the hatch lines would not rotate in my figures, and no hatch lines were drawn using "hatch demo." Perhaps an issue with my Linux_64 machine?

Martin Mul

Nice program, but i have one question:
If I hatch it hatches to one side of my graph. How do i manage to hatch also the other side of this graph?

Bob Farrell

Now need to include 'v6' as first arg to bar function in order for demo to work. Even though this was exactly what I was looking for (and amazed that this isn't built in), I ended up not using it partly because I didn't understand why exactly horizontal or exactly vertical lines jump one pixel -- wasn't asthetic to my eye for manuscript quality.

Joel Lindop

Very useful, thanks a lot!
One tiny change worth making: the function definition on the first line is missing its output variables. Change to:
function lh = hatch(obj,angle,color,style,step,width)
if you want access to the handle (lh).

Dimitri Pavlidis

Gene Smith

I have used this to create complex bar graphs. It took a while to figure out how to use it. My usage was

hdl = patch(x,y,'w','EdgeColor'.'k'); % using MATLAB "patch" to establish the border

hatch(hdl,[30,8,2],'b')

I did notice at cetain angles some of my small bars had the hash lines at strange angles.

Troy Goodson

I've done some limited testing of this
m-file with Matlab 6.5.0.196271 (R13.0.1)
and it's been working very well!
Thanks so much Iram!
Troy.

Steve Chiswell

Usefull m file. I often need hatched shading for b&w figures in journals. Hopefull this will do the job.
Took me a while to figure out how to run it

MATLAB Release
MATLAB 5.3.1 (R11.1)
Acknowledgements

Inspired: Hatchfill

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

» Watch video