matplotlib 如何设置y轴刻度位数的总长度相同

qaxu7uf2  于 2023-02-23  发布在  其他
关注(0)|答案(1)|浏览(211)

目前我的y轴刻度小数点后的位数都相同,因此刻度的总长度不同。我希望刻度位数的总长度相同。我该怎么做?
我的代码如下:

ax = plt.gca()
ax.yaxis.set_major_formatter(FormatStrFormatter('%1.3f'))

此处,y轴记号的总长度不同:

我希望刻度数字的总长度相同:

t30tvxxf

t30tvxxf1#

请改用FuncFormatter()。

from matplotlib.ticker import FuncFormatter
import math

创建输出所需标签的函数:

def my_format(val, pos):

    n = 3
    y = abs(val)

    dec = max(0,
              min(n,n-int(math.log10(y)))) if y else n

    return f"{val:.{dec}f}"

将函数应用于轴,而不是FormatStrFormatter():

ax.yaxis.set_major_formatter(FuncFormatter(my_format))

相关问题