matplotlib自动确定tick的范围

 

matplotlib画图中tick的最大值往往很有可能小于数据中最大值,比如下图

这种坐标范围很难满足科研论文的需要,因此自编程序自动生成坐标系范围,上图处理后的效果如下:

这样横纵坐标就完全包在里面了,而且也是自己指定的坐标间隔实际上相比于源程序只是增加了两条命令:

    ax.set_yticks(ytickrangecalculation(ymax,ymin,3)) 
    ax.set_xticks(ytickrangecalculation(x.max(),x.min(),3))

下面分享这个自编小函数的源码,存需: 

def ytickrangecalculation(ymax,ymin,n_points):
    #ymax 是数据中的最大值,ymin是数据中的最小值,npoints是tick 的个数
    timer=0
    length=ymax-ymin
    while length<10:
        timer=timer+1
        length=length*10
    while length>100:
        length=length/10
        timer=timer-1
    increase=length/n_points
    if increase<1:
        increase=1
    elif increase<2:
        increase=2
    elif increase<5:
        increase=5
    elif increase<10:
        increase=10
    elif increase<20:
        increase=20
    else:
        increase=30
    start=int(ymin/(increase/10**(timer)))*(increase/10**(timer))
    rangemax=increase*(int(length/increase)+2)/10**(timer)# +1是让rangemax大于ymax,再+1是防止range时候最大值抹去
    #     print(rangemax)
    rangelist=np.array(np.arange(start,start+rangemax,increase/10**(timer)))
    return rangelist

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值