plotting numbers on axes in scientific notation

Hi,

How can I plot numbers on the x and y axes in scientific notation?
I have very large values on the y axis which I’d like to show as 1e9 and not 1 followed by 9 zeros.

You can use

    def ticklabel_format(self, **kwargs):
        """
        Convenience method for manipulating the ScalarFormatter
        used by default for linear axes.

        Optional keyword arguments:

          ======= =====================================
          Keyword Description
          ======= =====================================
          *style* [ 'sci' (or 'scientific') | 'plain' ]
                    plain turns off scientific notation
          *axis* [ 'x' | 'y' | 'both' ]
          ======= =====================================

        Only the major ticks are affected.
        If the method is called when the
        :class:`~matplotlib.ticker.ScalarFormatter` is not the
        :class:`~matplotlib.ticker.Formatter` being used, an
        :exc:`AttributeError` will be raised with no additional error
        message.

        Additional capabilities and/or friendlier error checking may
        be added.

        """

anirudh vij wrote:

···

Hi,

How can I plot numbers on the x and y axes in scientific notation?
I have very large values on the y axis which I'd like to show as 1e9 and not 1 followed by 9 zeros.

------------------------------------------------------------------------

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
------------------------------------------------------------------------

_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users
  
--
Michael Droettboom
Science Software Branch
Operations and Engineering Division
Space Telescope Science Institute
Operated by AURA for NASA

It did not figure how to use that!
I've tried in ipython :
        import numpy as np
        t = np.linspace(0,1,1024)
        f = np.sin(10*t)/1e5
        plot(t,f)
        ax = gca()
        ax.ticklabel_format(style='sci', axis='y')
        show()

but the yticklabels are still in plain notation...
I've googled, but I still can not find where I am wrong!

···

Le mardi 09 septembre 2008 à 08:26 -0400, Michael Droettboom a écrit :

You can use

    def ticklabel_format(self, **kwargs):

--
Fabrice Silva <silva@...1918...>
LMA UPR CNRS 7051

Fabrice Silva wrote:

You can use

    def ticklabel_format(self, **kwargs):

It did not figure how to use that!
I've tried in ipython :
        import numpy as np
        t = np.linspace(0,1,1024)
        f = np.sin(10*t)/1e5
        plot(t,f)
        ax = gca()
        ax.ticklabel_format(style='sci', axis='y')

           ax.yaxis.major.formatter.set_powerlimits((0,0))

        show()

but the yticklabels are still in plain notation...
I've googled, but I still can not find where I am wrong!

Yes, this is confusing. The problem is that the "scientific" style uses scientific notation only for sufficiently large or small numbers, with thresholds determined by the powerlimits parameter. The line I added above will force scientific notation.

The ticklabel_format method needs another kwarg to enable setting the powerlimits.

Eric

···

Le mardi 09 septembre 2008 à 08:26 -0400, Michael Droettboom a écrit :

Eric Firing wrote:

Fabrice Silva wrote:

You can use

    def ticklabel_format(self, **kwargs):

It did not figure how to use that!
I've tried in ipython :
        import numpy as np
        t = np.linspace(0,1,1024)
        f = np.sin(10*t)/1e5
        plot(t,f)
        ax = gca()
        ax.ticklabel_format(style='sci', axis='y')

           ax.yaxis.major.formatter.set_powerlimits((0,0))

        show()

but the yticklabels are still in plain notation...
I've googled, but I still can not find where I am wrong!

Yes, this is confusing. The problem is that the "scientific" style uses scientific notation only for sufficiently large or small numbers, with thresholds determined by the powerlimits parameter. The line I added above will force scientific notation.

The ticklabel_format method needs another kwarg to enable setting the powerlimits.

Done in svn 6148. I called the kwarg 'scilimits' to emphasize that it works with the 'sci' style; if there are comments to the effect that I should have called it 'powerlimits' for consistency with the corresponding ScalarFormatter method, I can change it.

With the change in svn, instead of the line I added above, your call to ticklabel_format would be:

ax.ticklabel_format(style='sci', scilimits=(0,0), axis='y')

Eric

···

Le mardi 09 septembre 2008 à 08:26 -0400, Michael Droettboom a écrit :