2010-04-01 72 views
3

基本上,当使用matplotlib生成图时,y轴上的比例将变为数百万。如何开启数字分组(即1000000显示为1,000,000)还是打开小数点分隔符?Matplotlib数字分组(小数分隔符)

+0

您可以这样做:http://tiku.io/questions/1009459 /如何对格式轴数格式到数千上带有一个逗号式-matplotlib – 2015-02-13 05:41:49

回答

3

我不认为有一个内置的功能来做到这一点。 (这是我读完Q后的想法;我只是查了一下,在文档中找不到)。

无论如何,它很容易推出自己的。 (下面是一个完整的例子 - 也就是说,它将生成一个带有一个带有通知的刻度标签的轴的mpl图 - 虽然需要创建自定义刻度标签,但需要五行代码 - 三个(包括导入语句)用于创建自定义标签的功能,以及两行来创建新标签并将它们放置在指定轴上。)

# first code a function to generate the axis labels you want 
# ie, turn numbers greater than 1000 into commified strings (12549 => 12,549) 

import locale 
locale.setlocale(locale.LC_ALL, 'en_US') 
fnx = lambda x : locale.format("%d", x, grouping=True) 

from matplotlib import pyplot as PLT 
import numpy as NP 

data = NP.random.randint(15000, 85000, 50).reshape(25, 2) 
x, y = data[:,0], data[:,1] 

fig = PLT.figure() 
ax1 = fig.add_subplot(111) 
ax1.plot(x, y, "ro") 
default_xtick = range(20000, 100000, 10000) 

# these two lines are the crux: 
# create the custom tick labels 
new_xtick = map(fnx, default_xtick) 
# set those labels on the axis 
ax1.set_xticklabels(new_xtick) 

PLT.show()