开发者

kilo (K) and mega (M) suffixes on matplotlib's axes

开发者 https://www.devze.com 2023-03-17 07:43 出处:网络
I would like to print values on axes not as 30000 or 7000000 but as 30K or 7M. It means to add K (kilo) suffix for x < 10^6 and M (mega) suffix for x >= 10^6. How can I do that?

I would like to print values on axes not as 30000 or 7000000 but as 30K or 7M. It means to add K (kilo) suffix for x < 10^6 and M (mega) suffix for x >= 10^6. How can I do that?

Current code s开发者_开发百科nippet:

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


The best code to which I've come so far is:

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)


You will need to write your own function applies the suffixes for various conditions and use FuncFormatter instead of StrFormatter. This example should cover you.

0

精彩评论

暂无评论...
验证码 换一张
取 消