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+.
good job, could be a good idea
The code works pretty well. I cannot get it to work with the legend, though.
Here what I am trying:
hp = findobj(h,'type','patch');
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).
Generally works, but could not get the angle to work. I'm using Matlab on Windows 7, 32-bit.
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?
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?
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.
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).
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
I did notice at cetain angles some of my small bars had the hash lines at strange angles.
I've done some limited testing of this
m-file with Matlab 188.8.131.52271 (R13.0.1)
and it's been working very well!
Thanks so much Iram!
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