Python 以百万为单位设置y轴

Python 以百万为单位设置y轴,python,pandas,matplotlib,axis,Python,Pandas,Matplotlib,Axis,我对这个情节有一个问题: [![在此处输入图像描述][1][1] y轴是单位,但我需要它们以百万为单位: [![在此处输入图像描述][2][2] 你知道实现这一目标的方法吗?提前感谢。您可以使用: 从matplotlib导入pyplot作为plt 从matplotlib.ticker导入FuncFormatter def数百万_格式化程序(x,pos): 返回f'{x/1000000}' 图,ax=plt.子批次() ax.地块([1,2],[10000005000000]) ax.yaxis.

我对这个情节有一个问题:

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

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

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

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

您可以使用:

从matplotlib导入pyplot作为plt
从matplotlib.ticker导入FuncFormatter
def数百万_格式化程序(x,pos):
返回f'{x/1000000}'
图,ax=plt.子批次()
ax.地块([1,2],[10000005000000])
ax.yaxis.set\u major\u格式化程序(FuncFormatter(百万格式化程序))
ax.set_ylabel('值(以百万计)')
plt.show()

您可以使用如下自定义FuncFormatter:

来自matplotlib.ticker导入函数格式化程序的

将matplotlib.pyplot作为plt导入
def百万(x,pos):
'两个参数是值和记号位置'
返回“%1.1fM%”(x*1e-6)
格式化程序=函数格式化程序(百万)
图,ax=plt.子批次()
ax.yaxis.set\u major\u格式化程序(格式化程序)
或者,您甚至可以使用以下函数替换数百万,以支持所有量级:


def人工_格式(数字、位置):
震级=0
当abs(num)>=1000时:
震级+=1
num/=1000.0
#如果需要,请添加更多后缀
返回“%.2f%s%”(num,['''K','M','G','T','P'][数量])

您好,我已通过添加代码编辑了我的问题,以便您更好地了解我的问题所在,提前谢谢!您好,我已经通过添加代码编辑了我的问题,以便您能够更好地了解我的问题,提前谢谢!您好,我已经通过添加代码编辑了我的问题,以便您能够更好地了解我的问题,提前谢谢!
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')