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("我是⼄")matplotlib中subplot
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