File Exchange

image thumbnail

axescenter

version 1.2 (4.26 KB) by

Puts axes in the center of a plot. Zooming, panning and some command line manipulations allowed.

37 Downloads

Updated

View License

AXESCENTER(AX) puts axes in the center of axes AX. If AX is not specified, the current axes will be used. Many commonly used command line options are available to manipulate the center axes, as well as zoom and pan from the figure's menubar. See the help for a fuller description of features, and a demo.

This function relies on undocumented and unsupported properties, so it may not work on some versions of Matlab.

Tested on 2007a 2007b and 2006a.

Please email me about bugs and other concerns, and email me if this doesn't work on your version of Matlab. Thanks.

Comments and Ratings (15)

Robert

Robert (view profile)

Works great! NB. seems to be incompatible with new graphics in the 2014b release, hope you can modify it to sense the matlab release and operate accordingly.

This is great! Just once question. Is there a way to keep the "box" around the figure so as to sort of frame it? Here is my code

function z=graph(x)
a=0.5;
%
xmin=-0.4;
xmax=1.4;
dx=0.01;
%
x=[xmin:dx:xmax];
%
z=x.*(1-x).*(x-a);
%
plot(x,z)
axescenter

Any suggestions would be greatly appreciated. Thanks.

Mircea

Mircea (view profile)

Does this work on 3d-plots?

Wyatt

Wyatt (view profile)

I couldn't get it to work on Matlab R2011B, but I am a beginner.

Joachim

bullox

bullox (view profile)

This is great - using on 2010a. Doesn't seem to put scale units (e.g. 10^-14) unless I run it twice... any ideas?

Loginatorist

Loginatorist (view profile)

Hello Robert,

There is no guarantee the axes go through the origin with any plot. This will depend on the data. But if the data is so centered, axescenter will go through the origin. Also, I cannot reproduce your claim about the xlabel. For example:

subplot(1,2,1)
plot(-10:10) % Origin-centered data
axescenter
xlabel('X Label') % Correctly placed!
subplot(1,2,2)
plot(-pi:.1:pi,cos(-pi:.1:pi))
axescenter
xlabel('X Label2') % Correctly placed.

Please email me if with some code to reproduce what you are seeing...

Robert

Robert (view profile)

Great idea, two bugs for somebody to fix though:

1) It doesn't seem to work correctly with subplots (i.e. axes don't actually go through the origin)

2) It seems to change the focus from the current axes somehow, so that e.g. calls to xlabel don't work after calling axescenter. However, this is fixed by reselecting the axes.

Petter

Petter (view profile)

A better functionality would be to always have the axes intersect at the origin.

Stefan

Stefan (view profile)

This is very good; I have always wondered why MatLab does not have this feature as a standard.

I have one problem: only the "hidden" axes will show (in gray) when printing to a file (TIFF)

AXESCENTER is doing what it is supposed to do.

Loginatorist

Loginatorist (view profile)

Sergei noticed that if the parent of the current axes is not a figure, AXESCENTER will not position correctly. He had called AXESCENTER for an axes that was in a uipanel. An update is on the way.

That works very good!

2 Matt Fig
This is a good work. Great for other user from Russia

Thomas Feja

That works very well!

One remark:
gives wrong tick labels when used together with "axis equal"

Loginatorist

Loginatorist (view profile)

I realized I should have a check that the input arg is a handle of the correct type. Update on the way.

Updates

1.2

Fixed problem of non-figure parents.

1.1

Input checking to insure axes handle is passed.

MATLAB Release
MATLAB 7.4 (R2007a)
Acknowledgements

Inspired by: PlotAxisAtOrigin

Inspired: oaxes - central axis lines through an origin

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

» Watch video