Can I show decimal places and scientific notation on the axis of a matplotlib plot using Python 2.7?
Question: I am plotting some big numbers with matplotlib in a pyqt program using python
2.7. I have a y-axis that ranges from 1e+18 to 3e+18 (usually). I'd like to
see each tick mark show values in scientific notation and with 2 decimal
places. For example 2.35e+18 instead of just 2e+18 because values between
2e+18 and 3e+18 still read just 2e+18 for a few tickmarks. Here is an example
of that problem.

    
    
    import numpy as np
    import matplotlib.pyplot as plt
    fig = plt.figure()
    ax = fig.add_subplot(111)
    x = np.linspace(0, 300, 20)
    y = np.linspace(0,300, 20)
    y = y*1e16
    ax.plot(x,y)  
    ax.get_xaxis().set_major_formatter(plt.LogFormatter(10,  labelOnlyBase=False))
    ax.get_yaxis().set_major_formatter(plt.LogFormatter(10,  labelOnlyBase=False))
    plt.show()
    


Answer: This is really easy to do if you use the
`matplotlib.ticker.FormatStrFormatter` as opposed to the `LogFormatter`. The
following code will label everything with the format `'%.2e'`:

    
    
    import numpy as np
    import matplotlib.pyplot as plt
    import matplotlib.ticker as mtick
    
    fig = plt.figure()
    
    ax = fig.add_subplot(111)
    
    x = np.linspace(0, 300, 20)
    
    y = np.linspace(0,300, 20)
    y = y*1e16
    
    ax.plot(x,y)
    
    ax.yaxis.set_major_formatter(mtick.FormatStrFormatter('%.2e'))
    
    plt.show()
    

![Example plot](http://i.stack.imgur.com/fi7XA.png)

