嗨,我正在与RL合作,我想绘制n个时间步长的奖励。假设我有100万个时间步长,那么我将获得相同的奖励。现在,当我绘制它时,x标签变得更加混乱。我希望xlabel显示为10K,20K到1M。我应该怎么做?

例如我有这段代码,

import matplotlib.pyplot as plt
import torch

x = torch.rand(1000000,)
plt.plot(x)
plt.show()


因此,当您绘制此图时,在x轴上您将得到0、200000、400000、600000、800000、1000000
但我想将其显示为20K,40K,60K,80K,1M

最佳答案

这是Jake VanderPlas's custom ticks的改编(他用π的倍数写)。

from math import log10, floor
from matplotlib import pyplot as plt

def format_func(value, tick_number=None):
    num_thousands = 0 if abs(value) < 1000 else floor (log10(abs(value))/3)
    value = round(value / 1000**num_thousands, 2)
    return f'{value:g}'+' KMGTPEZY'[num_thousands]

fig, ax = plt.subplots()
plt.plot([500, 2_000], [2_200_000, 4_000_000])
ax.xaxis.set_major_formatter(plt.FuncFormatter(format_func))
ax.yaxis.set_major_formatter(plt.FuncFormatter(format_func))
plt.show()


python - 如何在matplotlib图的xlabel中打印10K,20K…1M-LMLPHP

关于python - 如何在matplotlib图的xlabel中打印10K,20K…1M,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59969492/

10-09 08:39