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),还是处理的上边线,如图辛:
(不需要写结尾)
推荐阅读
-
Winform中自定义添加ZedGraph右键实现设置所有Y轴刻度的上下限
-
ps怎么设置选区单位为毫米? ps毫米选取图像的教程
-
学习python中matplotlib绘图设置坐标轴刻度、文本
-
Python使用matplotlib模块绘制图像并设置标题与坐标轴等信息示例
-
Python利用matplotlib.pyplot绘图时如何设置坐标轴刻度
-
Python数据分析matplotlib设置多个子图的间距方法
-
在matplotlib的图中设置中文标签的方法
-
修改python plot折线图的坐标轴刻度方法
-
用matplotlib画复杂的二维数学函数坐标图像
-
python matplotlib画盒图、子图解决坐标轴标签重叠的问题