大数值(单位:ticks)

2024-09-27 23:18:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用Python制作6幅图像的子图,y轴值非常高(范围从0到250000)。我想以1000的倍数显示它们,但不是以1K、10K、250K等形式显示,而是以1,10250的形式显示,在顶部有1e3,以显示所有值都是1000的倍数。有没有一个简单的方法可以做到这一点?我这样做是为了节省水平空间,因为我需要它来适应我的论文。这里是my output,这里是我想要它看起来的example,下面是代码:

fig,ax = plt.subplots(3,2,figsize=(10,20))

im1 = ax[0,0].hist(im1,bins=300,range=(0.66,0.95))

im2 = ax[0,1].hist(im2,bins=300,range=(0,0.8))

im3 = ax[1,0].hist(im3,bins=300,range=(200,280))

im4 = ax[1,1].hist(im4,bins=300,range=(0,80))

im5 = ax[2,0].hist(im5,bins=300,range=(200,280))   

im6 = ax[2,1].hist(im6,bins=300,range=(0,80))

Tags: 方法图像rangeaxhist形式倍数bins
1条回答
网友
1楼 · 发布于 2024-09-27 23:18:06

您只需将yticklabels更改为特定的字符串格式。我在下面展示了一些虚拟数据:

dat = np.random.rand(100000,1)
f,ax = plt.subplots(1,1)
ax.hist(dat) 
pow10 = 3 
ax.set_yticklabels(['{:d}e{:d}'.format(int(i)//(10**pow10),pow10) 
                    if int(i)>(10**pow10) else i for i in ax.get_yticks()])

如果它们甚至不是十的幂,这可能会很难看,但在这种情况下,您也可以选择编辑Ytick本身

编辑

要处理更新的问题,您只需更改标签的格式,如下所示:

dat = np.random.rand(100000,1)
f,ax = plt.subplots(1,1)
ax.hist(dat)  
ax.ticklabel_format(axis='y',style='sci',scilimits=(0,0))

这将产生如下轴:

enter image description here

相关问题 更多 >

    热门问题