嗨,我正在与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,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59969492/