matplotlib 如何格式化带有kilo(K)和mega(M)后缀的tick标签

lxkprmvk  于 2023-10-24  发布在  其他
关注(0)|答案(2)|浏览(130)

我想在坐标轴上打印的值不是30000或7000000,而是30K或7M。这意味着当x < 10^6时添加K(kilo)后缀,当x >= 10^6时添加M(mega)后缀。我该怎么做?
当前代码段:

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

carvr3hs1#

到目前为止,我写的最好的代码是:

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)
vuktfyat

vuktfyat2#

您需要编写自己的函数,为各种条件应用后缀,并使用FuncFormatter而不是StrFormatter。This example应该涵盖您。

相关问题