Rank: 68 based on 903 downloads (last 30 days) and 1 file submitted
photo

Erik Johnson

E-mail
Company/University
Univ of Southern California

Personal Profile:

Associate Professor & Associate Chair, Astani Department of Civil & Env. Engineering, University of Southern California
B.S. (1988), M.S. (1993), Ph.D. (1997), Aeronautical & Astronautical Engineering, University of Illinois at Urbana-Champaign
http://www.usc.edu/dept/civil_eng/johnsone/

Professional Interests:

 

Watch this Author's files

 

Files Posted by Erik
Updated   File Tags Downloads
(last 30 days)
Comments Rating
20 May 2009 Screenshot arrow.m Draw a line with an arrowhead. Author: Erik Johnson annotation, customization, arrow, arrowhead, line, graphics 903 82
  • 4.60674
4.6 | 92 ratings
Comments and Ratings by Erik View all
Updated File Comments Rating
12 Jul 2012 legendflex: a more flexible legend Create a legend with more flexible positioning and labeling capabilities Author: Kelly Kearney

If legendflex is called like:

[legend_h, object_h, plot_h, text_str] = legendflex(h, strs, 'ncol', ncols, ... );

then a workaround for the column offset is:

% fix legendflex's subsequent column locations
h = findobj(object_h, 'type', 'line');
y = get(h, {'YData'});
y = repmat(ans(1:ceil(length(y)/2/ncols)*2,:), ncols, 1);
y = ans(1:length(h),:);
set(h, {'YData'}, y);

11 Jul 2012 legendflex: a more flexible legend Create a legend with more flexible positioning and labeling capabilities Author: Kelly Kearney

A VERY useful function. However, I get slight offsets in the vertical locations of the lines/markers in different columns. Have you seen this?

For example, the code:

nrows = 1;
ncols = 3;
n = nrows * ncols;
x = repmat([0;1], 1, n);
y = [zeros(1,n); (1:n)/n];
h = plot(x, y);
strs = num2cell(char('`'+(1:n)), 1)';
[legax,legh] = legendflex(h, strs, 'ncol', ncols);

get(findobj(legh,'type','line','LineStyle','-'),{'YData'});
cat(1,ans{:}); yline=reshape(ans(:,1),[],3)
get(findobj(legh,'type','line','LineStyle','none'),{'YData'});
cat(1,ans{:}); ymarker=reshape(ans(:,1),[],3)
get(findobj(legh,'type','text'),{'Position'});
cat(1,ans{:}); ytext=reshape(ans(:,2),[],3)

gives the results:

yline = [9.5388 9.2710 9.0032]
ymarker = [9.5388 9.2710 9.0032]
ytext = [4.3091 4.3091 4.3091]

showing that the text items are set at consistent locations, but the lines and markers are slightly offset. (Change nrows to, say, 8 and the same vertical offset happens on all elements of subsequent columns.)

Any suggestions?

P.S. This is in MATLAB 7.14.0.739 (R2012a) on a Mac.

Comments and Ratings on Erik's Files View all
Updated File Comment by Comments Rating
04 Mar 2014 arrow.m Draw a line with an arrowhead. Author: Erik Johnson Hosseini, Pegah

I think this is one of the best functions I have ever stumbled upon. Thanks alot.

05 Feb 2014 arrow.m Draw a line with an arrowhead. Author: Erik Johnson Yagiz

08 Jan 2014 arrow.m Draw a line with an arrowhead. Author: Erik Johnson Zhang, Li

Useful! How to change the color of the arrow ?

17 Oct 2013 arrow.m Draw a line with an arrowhead. Author: Erik Johnson Alan

13 Aug 2013 arrow.m Draw a line with an arrowhead. Author: Erik Johnson al jodah, ammar

Contact us