1

我想在我的颜色栏中放置两个刻度。matplotlib。

我的问题是颜色栏上的数字格式。我想而不是1.99e+00拥有1.9e0. 如果数字被四舍五入会更好(例如2.0e0

该数字0应保持为0

这是代码:

from scipy import *
import matplotlib.pylab as plt
import numpy as np

def main():
# Creating the grid of coordinates x,y 
x,y = ogrid[-1.:1.:.01, -1.:1.:.01]

z = 3*y*(3*x**2-y**2)/4 + .5*cos(6*pi * sqrt(x**2 +y**2) + arctan2(x,y))

fig = plt.figure()

ax = fig.add_subplot(111)
result = ax.imshow(z, 
                   origin='lower', 
                   extent=[0,2,0,400],              
           interpolation='nearest',
           aspect='auto'
          )
cbar = fig.colorbar( result , ticks=[ 0 , z.max() ])
    cbar.ax.set_yticklabels([ 0 ,  '{0:.2e}'.format( z.max()) ]) 
    cbar.outline.remove()

plt.show()

if __name__ == '__main__':
    main()

在此处输入图像描述

4

1 回答 1

3

您使用的格式可以简单地修改为小数点后一位而不是两位,这会自动包括四舍五入。如果您将它们作为文本修改进行,那么您想要的其他更改也很容易。

def format_yticklabel(number):
    return '{0:.1e}'.format(number).replace('+0', '').replace('-0', '-')

>>> format_yticklabel(1.99)
'2.0e0'
于 2012-04-25T15:34:12.340 回答