килограммовые (K) и мега (M) суффиксы на осях matplotlib - PullRequest
5 голосов
/ 02 июля 2011

Я хотел бы напечатать значения по осям не как 30000 или 7000000, а как 30K или 7M.Это означает добавление суффикса K (кило) для x <10 ^ 6 и суффикса M (мега) для x> = 10 ^ 6.Как я могу это сделать?

Текущий фрагмент кода:

ax = pylab.gca()
formatter = matplotlib.ticker.FormatStrFormatter('%.f')
ax.xaxis.set_major_formatter(formatter)

Ответы [ 2 ]

7 голосов
/ 12 августа 2011

Лучший код, к которому я дошел, это:

ax = matplotlib.pyplot.gca()
mkfunc = lambda x, pos: '%1.1fM' % (x * 1e-6) if x >= 1e6 else '%1.1fK' % (x * 1e-3) if x >= 1e3 else '%1.1f' % x
mkformatter = matplotlib.ticker.FuncFormatter(mkfunc)
ax.yaxis.set_major_formatter(mkformatter)
4 голосов
/ 02 июля 2011

Вам нужно будет написать свою собственную функцию, применить суффиксы для различных условий и использовать FuncFormatter вместо StrFormatter. Этот пример должен охватить вас.

...