matplotlib图像刻度、坐标轴的设置

matplotlib.pyplot画出来的图,有时候看着挺别扭的:

别扭在哪?matplotlib默认的坐标轴竟然不是以(0,0)为原点。这就需要我们自己调整坐标轴的位置了。

先抛出结论:

1,刻度(ticks)的颜色独立于边线(spine)

2,刻度(ticks)的位置则依附于边线(spine)

3,可以通过设置边线(spine)来更改坐标轴的位置

看不懂?go on↓

 

一,颜色问题

如图“我是甲”,这是y=2*np.sin(x)+0.5的默认曲线图,没有做任何格式设置,代码如下:

import numpy as np
from matplotlib import pyplot as plt
fig = plt.figure("我是甲")
ax=fig.add_subplot(111)
line,=ax.plot(x, 2*np.sin(x)+0.5)
plt.show

生成图片如下:

如下图箭头标注,曲线上下左右的四条边线称为spine,左边线就是ax.spines['left']:

有些和我一样帅的朋友可能会问:边线(spine)和刻度(ticks)是啥关系?尝试更改左边线的颜色:

import numpy as np
from matplotlib import pyplot as plt
fig = plt.figure("我是乙")
ax=fig.add_subplot(111)
ax.spines['left'].set_color('yellow')        #左边线设置为黄色
line,=ax.plot(x, 2*np.sin(x)+0.5)
plt.show

得到图像如乙:

只是左边线变黄了,刻度还是黑色。那么如何更改刻度颜色呢?添加一行代码:

import numpy as np
from matplotlib import pyplot as plt
fig = plt.figure("我是丙")
ax=fig.add_subplot(111)
ax.spines['left'].set_color('yellow')                      #左边线设置为黄色
ax.xaxis.set_tick_params(color='red',colors='green')       #设置X轴刻度颜色
line,=ax.plot(x, 2*np.sin(x)+0.5)
plt.show

得到的图像如丙,可以看到X轴刻度线和刻度值的颜色分别变成了红和绿,而X轴的颜色还是黑色:

至此,我们可以得到结论1:

1,刻度(ticks)的颜色独立于边线(spine)

 

二, 位置问题

把花里胡哨的颜色设置删掉,设置一下下边线的位置:

import numpy as np
from matplotlib import pyplot as plt
fig = plt.figure("我是丁")
ax=fig.add_subplot(111)
ax.spines['bottom'].set_position(('data',2))          #下边线位置放到数值为2的位置
line,=ax.plot(x, 2*np.sin(x)+0.5)
plt.show

得的图像如丁,可以看到刻度跟着下边线一块儿挪走了:

解释一下添加的那行代码。‘bottom'表示是下边线,(’data', 2 )表示是下边线放到data为2的位置。那么data是啥? 就是Y轴上刻度为2的地方。

所以结论2、3也有了:

2,刻度(ticks)的位置则依附于边线(spine)

3,可以通过设置边线(spine)来更改坐标轴的位置

事实上,可以通过

ax.xaxis.set_ticks_position('top')

来设置上边线为X轴.类似地,如果你希望右边线作为Y轴,就写一句:

ax.yaxis.set_ticks_position('right')

 

三,边线位置的具体设置方法

官方文档对set_position的说明如下:

 啥意思?

确定边线的位置有三种操作。

如果是’data',就是按照刻度值来,这个咱已经知道了

如果是'outward'呢?就是根据距离边缘位置的距离

如果是'axes'呢?就是根据坐标轴的百分比,数字取值只能是0.0~1.0

我知道这么解释你是肯定看不懂的,再帅也看不懂。所以上实例:

1,'outward'用法:

设置下边线的'outward'为12:

ax.spines['bottom'].set_position(('outward',12))  #下边线偏离边缘距离为12
 

↑可以看到下边线往下跑了些。

再把下边线的‘outward'设为-17:

ax.spines['bottom'].set_position(('outward',-17))  #下边线偏离边缘距离为-17

嗯,下边线就往上跑了17

2,'axes'用法

这回我们搞搞右边线。将右边线的’axes'设为0.3:

import numpy as np
from matplotlib import pyplot as plt
fig = plt.figure("我是己")
ax=fig.add_subplot(111)
ax.spines['right'].set_position(('axes',0.3))    #右边线移到30%的位置
line,=ax.plot(x, 2*np.sin(x)+0.5)
plt.show

得到了己图:

嗯,右边线跑到了整个图像的左边起30%的位置

3,'center'和'zero'

为了图省事,其实我们可以直接用'center'把边线挪到正中,相当于('axes', 0.5),这次我们处理的是上边线。如图庚:

 

也可以用'zero'把边线移到刻度为0的地方,相当于('data', 0),还是处理的上边线,如图辛:

(不需要写结尾)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值