28

I have the following range of numpy data (deltas of usec timestamps):

array([ 4.312,  4.317,  4.316,  4.32 ,  4.316,  4.316,  4.319,  4.317,
    4.317,  4.316,  4.318,  4.316,  4.318,  4.316,  4.318,  4.317,
    4.317,  4.317,  4.316,  4.317,  4.318,  4.316,  4.318,  4.316,
    4.318,  4.316,  4.317,  4.317,  4.318,  4.316,  4.317,  4.317,
    4.317,  4.317,  4.317,  4.316,  4.319,  4.315,  4.319,  4.315,
    4.319,  4.315,  4.316,  4.319,  4.317,  4.317,  4.317,  4.318,
    4.315,  4.317,  4.317,  4.317,  4.319,  4.314,  4.32 ,  4.315,
    4.317,  4.318,  4.315,  4.318,  4.317,  4.317,  4.317,  4.316,
    4.317,  4.318,  4.317,  4.317,  4.317,  4.315,  4.319,  4.317,
    4.315,  4.319,  4.316,  4.318,  4.318,  4.315,  4.318,  4.317,
    4.317,  4.321])

When I plot with matplotlib.pyplot:

 import matplotlib.pyplot as plt
 plt.plot( deltas ) 
 plt.show()

I get the following plot. Why is the Y-axis being scaled that way? How can I get the Y-axis to be labeled as the data, not an offset of the data? Sometimes the plot is the "+4.nnn" sometimes it isn't (depending on the data range?).

Plotted "strangely":
Plotted Badly

Plotted "correctly":
Plotted Correctly

Saullo G. P. Castro
  • 53,388
  • 26
  • 170
  • 232
David Poole
  • 3,262
  • 4
  • 38
  • 34

3 Answers3

45

set useOffset to False:

ax = plt.gca()
ax.ticklabel_format(useOffset=False)
HYRY
  • 89,863
  • 23
  • 181
  • 185
  • 8
    This doesn't work for me anymore in MPL 1.3.0. It says that this now only works with a ScalarFormatter. So the short answer in here solved it for me: http://stackoverflow.com/questions/3677368/matplotlib-format-axis-offset-values-to-whole-numbers-or-specific-number – K.-Michael Aye Sep 03 '13 at 22:19
  • 1
    `ax.get_yaxis().get_major_formatter().set_useOffset(False)` – Klimaat Jul 26 '18 at 16:09
10

This answer suggested disabling the offset as a global setting, which worked for me:

matplotlib.rcParams['axes.formatter.useoffset'] = False
Evgeni Sergeev
  • 20,806
  • 16
  • 98
  • 121
9

You can also use

ax = plt.gca()
ax.set_yticklabels(ax.get_yticks())

Although I like @HYRY's answer better.

mathematical.coffee
  • 54,152
  • 10
  • 138
  • 187