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