pandas 以百万为单位设置y轴[重复]

xqnpmsa8  于 12个月前  发布在  其他
关注(0)|答案(3)|浏览(101)

此问题在此处已有答案

How to format axis tick labels from number to thousands or Millions (125,436 to 125.4K)(5个答案)
三年前关闭。
我对这个情节有一个问题:


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



你知道一个方法来实现这一点吗?提前感谢。

mepcadol

mepcadol1#

你可以像这样使用一个自定义的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])

k7fdbhmy

k7fdbhmy2#

import pandas as pd
import matplotlib .pyplot as plt
import matplotlib.ticker as ticker
fig, ax=plt.subplots()
ax.plot([1, 2], [1000000, 5000000])
scale_y = 1e6
ticks_y = ticker.FuncFormatter(lambda x, pos: '{0:g}'.format(x/scale_y))
ax.yaxis.set_major_formatter(ticks_y)
ax.set_ylabel('val in millions')

字符串


的数据

dnph8jn4

dnph8jn43#

你可以使用FuncFormatter

from matplotlib import pyplot as plt
from matplotlib.ticker import FuncFormatter

def millions_formatter(x, pos):
    return f'{x / 1000000}'

fig, ax = plt.subplots()
ax.plot([1, 2], [1000000, 5000000])
ax.yaxis.set_major_formatter(FuncFormatter(millions_formatter))
ax.set_ylabel('value (in millions)')
plt.show()

字符串


的数据

相关问题