28

When I try to do a plot against a range with big enough numbers I get an axis with relative shift for all the ticks. For example:

plot([1000, 1001, 1002], [1, 2, 3])

I get these ticks on axis of abscissas:

0.0     0.5     1.0     1.5     2.0
                               +1e3

The question is how to remove +1e3 and get just:

1000.0  1000.5  1001.0  1001.5  1002.0

2 Answers 2

31
plot([1000, 1001, 1002], [1, 2, 3])
gca().get_xaxis().get_major_formatter().set_useOffset(False)
draw()

This grabs the current axes, gets the x-axis axis object and then the major formatter object and sets useOffset to false (doc).

In newer versions (1.4+) of matplotlib the default behavior can be changed via the axes.formatter.useoffset rcparam.

Sign up to request clarification or add additional context in comments.

Comments

3

To disable relative shift everywhere, set the rc parameter:

import matplotlib
matplotlib.rc('axes.formatter', useoffset=False)

3 Comments

Maybe you should add some explanation to your answer so it is not just code.
While this code snippet may solve the question, including an explanation really helps to improve the quality of your post. Remember that you are answering the question for readers in the future, and those people might not know the reasons for your code suggestion.
Updated to add an explanation.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.