首页 > 解决方案 > 以百万为单位设置 y 轴

问题描述

我对这个情节有疑问:

[![在此处输入图像描述][1]][1]

y 轴是单位,但我需要它们以百万为单位:

[![在此处输入图像描述][2]][2]

你知道实现这一目标的方法吗?提前致谢。

标签: pythonpandasmatplotlibaxis

解决方案


您可以像这样使用自定义 FuncFormatter:

from matplotlib.ticker import FuncFormatter
import matplotlib.pyplot as plt
def millions(x, pos):
    'The two args are the value and tick position'
    return '%1.1fM' % (x * 1e-6)


formatter = FuncFormatter(millions)

fig, ax = plt.subplots()
ax.yaxis.set_major_formatter(formatter)

或者您甚至可以用以下函数替换数百万以支持所有量级:


def human_format(num, pos):
    magnitude = 0
    while abs(num) >= 1000:
        magnitude += 1
        num /= 1000.0
    # add more suffixes if you need them
    return '%.2f%s' % (num, ['', 'K', 'M', 'G', 'T', 'P'][magnitude])


推荐阅读