基本上,当使用matplotlib生成绘图时,y轴上的刻度会达到数百万。如何启用数字分组(即1000000显示为1,000,000)或打开小数分隔符?
答案 0 :(得分:3)
我认为没有内置功能可以做到这一点。 (这就是我读完你的Q后的想法;我刚检查过,在文档中找不到一个)。
无论如何,你很容易自己动手。
(下面是一个完整的例子 - 也就是说,它将生成一个mpl图,其中一个轴具有通用的刻度标签 - 尽管你需要五行代码来创建自定义刻度标签 - 三个(包括import语句)用于创建自定义标签的函数,以及用于创建新标签并将它们放置在指定轴上的两行。)
# 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()