File Exchange

image thumbnail

Centered coordinate axes in 2D plots

version 1.2 (1.91 KB) by

Takes the current coordinate axes (with ticks and labels) and draws new ones centered at the origin.

11 Downloads

Updated

View License

MATLAB does not have any built-in functionality for centering the coordinate axes around the origin. This tool is a first fix for solving this. An example script is included showing how to use the function.
Tested on MATLAB 2007b. Works fine, as long as the figure is not resized after the function is called.

Comments and Ratings (10)

yuseff12

thanks a lot for this!

Johan Carlson

Thanks! I have included your suggested fix, and it appears to be working in the latest release as well (2015b). Will upload the new version in a minute (ver. 1.2).

Pierre Maurel

if the 'Units' property of the figure is fixed as "normalized" there is a problem in the arrow size.
Here is an apparent fix (after definition of figpos):

if (strcmp(get(gcf,'Units'),'normalized'))
screensize = get( 0, 'ScreenSize' );
figpos = figpos.*screensize;
end

Johan Carlson

Glad you liked it! Never tried doing it for 3D, but in principle you should be able to hack the code to do it.

jokulhlaup

This is a great bit of code and just what I needed.

Is there a simple way to make this work in 3D?

Gar

Gar (view profile)

Johan Carlson

Mario,
I deliberately removed the end tick labels in on the axes, simply because I didn't think it looked so good. It appeared that changing this takes a bit of fixing of the code to make the arrowheads appear in the right place. Anyway, I'm on it, and I'll post a new version in a couple of days.

/JC

Thank u Johan, I downloaded "centeraxes", it solved my problem.
How do I get the axes ticked from -1 to 1 please? now it's ticked only from -0.9 to 0.9.
Thanks again
Mario

Johan Carlson

Thank you John!

The option of where to put the center is a simple fix, and I'll definitely deal with that. The other issue is more serious, and unfortunately slightly harder to solve. Nevertheless, I'll give it a go.

Another limitation at the moment is that the tick marks and arrowheads tend to scale if the image is resized after the call to centeraxes.

Anyway, thanks for the feedback.

/Johan

John Hughes

Pretty decent. Doesn't work in cases where you have multiple axes, as you sometimes get with

plot(foo)
hold on
plot(bar)
plot(baz)
hold off

But otherwise, it works pretty darned well. One suggested improvement: allow an option for what "center" to use, so that I could have x- and y-axes intersecting at (-1, 2), if I so chose.

Updates

1.2

Fixed bug related to axes in 'Normalized' 'Units'.

1.1

Changed the x axis and y axis tick labeling so that it now includes also the end points. As a consequence, the axes are now 10% longer in order to make room for the arrowheads.

MATLAB Release
MATLAB 8.6 (R2015b)

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

» Watch video