设置y轴刻度_Matplotlib最详细的刻度调整

e59f976b1eeb32ba7113c2a02871069b.gif

在使用Matplotlib绘图时,刻度设置在刚接触时比较令人头疼的,因为很多教程既使用了plt.xxxx,又使用了ax.xxxx,为了对刻度设置进行统一,本文将使用面向对象的方法:ax.xxxx进行刻度调整讲解。所以在使用本文档之前,你必须先阅读我之前写的区别文章

首先我们使用plt.figure()新建一个对象,并使用ax = plt.gca()获取当前绘图区域

plt.figure(figsize = (7,6),dpi = 100)
ax = plt.gca()
plt.show()
002486e6135245b3341d97b3da8ff542.png

坐标轴范围

调整坐标轴范围可以使用ax.set_xlim()或者ax.set_ylim(),比如将x和y轴范围都设置在0-5

ax.set_xlim(0,5)
ax.set_ylim(0,5)
0435a305292001353c2f1ef4a91fe970.png

坐标轴标签

给坐标轴添加文字使用ax.set_xlabel()ax.set_ylabel(),其实在之前我们就说过,只要涉及到文字,本质上都一样,接收的参数也基本一致,比如标题、图例、注释等,所以在这里本文不详细讲解,不懂的话可以回去翻之前几篇文章,我们仅做一个示例

ax.set_xlabel("我是X轴",fontsize = 14,color = 'b',alpha = 0.7,bbox=dict(boxstyle='round,pad=0.5', fc='yellow', ec='blue',lw=1 ,alpha=0.7))
ax.set_ylabel("我是Y轴",fontsize = 14,color = 'b',alpha = 0.7,bbox=dict(boxstyle='round,pad=0.5', fc='yellow', ec='blue',lw=1 ,alpha=0.7))
c38928f8678d0850e050eeb3b6ba8fed.png

刻度文字

如果需要修改默认的刻度文字,可以使用ax.set_xticklabels()即可(y轴类似),接收一组list,里面是每个刻度上的文字,注意长度对齐,不过既然涉及到文字,类似修改标题、注释相关的文字样式调整也是支持的,此处不赘述,给一个例子

ax.set_xticklabels(['A','B','C','D','E','F','G'])
ax.set_yticklabels(['鉴','图','化','视','可','注','关'],family = 'SimHei',fontsize = 14)

99fb1e7a2a88a525b3986f1317ab60ff.png

坐标轴刻度

刻度设置是比较头疼的,在讲解刻度设置之前,我们需要先了解主副刻度cdc3fb712fb5c3494b35447f570f0f99.png

如图所示,相信很好理解,0,1,2,3,4就是主刻度,中间的小刻度就是副刻度。所以修改刻度就是对主副刻度进行调整。

在Matplotlib中,默认的刻度是由locator类控制,其中子类MultipleLocatorFormatStrFormatter可以人为修改,他俩字面意思不难理解一个负责位置,一个负责样式。我们来看一个例子,首先导入

from matplotlib.ticker import MultipleLocator, FormatStrFormatter

下面我们认为调整坐标轴刻度间隔,老规矩,直接上代码,使用MultipleLocator进行初始化

xmajorLocator   = MultipleLocator(1)
ax.xaxis.set_major_locator(xmajorLocator)

ymajorLocator   = MultipleLocator(1)
ax.yaxis.set_major_locator(ymajorLocator)

xminorLocator   = MultipleLocator(0.25)
ax.xaxis.set_minor_locator(xminorLocator)

yminorLocator   = MultipleLocator(0.25)
ax.yaxis.set_minor_locator(yminorLocator)

解释一下,MultipleLocator(1)代表刻度之间间隔1,MultipleLocator(0.25)代表刻度之间间隔0.5,接着手动设置xy轴的主副刻度间隔,使用ax.xaxis.set_major_locator(xmajorLocator)重写默认的locator,就是将x轴的主刻度按照刚刚的初始化设置进行调整,其他以此类推,此时效果为5519fec8bfca543c5858848de1f43cbf.png可以看到,主刻度间隔为1,副刻度间隔0.25,但是副刻度没有数值标注,这是可以使用FormatStrFormatter类进行修改

xminorFormatter = FormatStrFormatter('%0.2f')
ax.xaxis.set_minor_formatter(xminorFormatter)

在上面第一行代码,我们将初始化了一个保留2为小数的坐标轴间隔,并在第二行对x轴的副刻度进行修改,此时效果如下97d3dbfa5bbc374e8beb49409191f4e1.png

最后为了突出主副刻度,我们可以使用tick_params对刻度线进行调整,让我们将主刻度线延长

tick_params(which='major',length=8,labelsize=10)
tick_params(which='minor',length=4)

使用起来很简单,用which指定刻度轴,length控制长度,labelsize控制大小即可!cdc3fb712fb5c3494b35447f570f0f99.png

现在,我们就制作出一个想要的刻度,其实官方文档中对于刻度线的设置,尤其是MultipleLocatorFormatStrFormatter类的使用,讲的比较复杂,但是从刚刚的使用过程发现,调整刻度并不是很难!

因为我们在修改刻度时,关注的大多就是间隔、标注、长度,所以如果你需要修改刻度,可以直接复制我的代码,根据需求调整出你想要的效果!

有关坐标轴及刻度的讲解就到这里,相信已经覆盖了大多数场景下的需求,而有些特殊的坐标轴及刻度设置,我会在后续单独讲解,有任何问题可以给我留言,谢谢!

-END-

d7bbaea45ab87cc2b0a537209d0764ec.gif

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值