matplotlib模块数据可视化-修改坐标轴位置

1 导入模块和构造数据

import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-3,3,50)
y1 = 2*x + 1
y2 = x**2
plt.plot(x,y1)
plt.plot(x,y2,color='red',linewidth=2,linestyle='--')

2 默认样式

matplotlib模块数据可视化-修改坐标轴位置_第1张图片

3 获取坐标轴

在matplotlib的图中,默认有四个轴,两个横轴和两个竖轴,可以通过ax = plt.gca()方法获取,gca是‘get current axes’的缩写,获取图像的轴,总共有四个轴top、bottom、left和right。

3.1 axes指定要用的轴

由于axes会获取到四个轴,而我们只需要两个轴,所以我们需要把另外两个轴隐藏,把顶部和右边轴的颜色设置为none,将不会显示。

# 设置有边框和头部边框颜色为空right、top、bottom、left
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
效果图:

matplotlib模块数据可视化-修改坐标轴位置_第2张图片

3.2 移动下面和左边的轴到指定位置

# 设置底边的移动范围,移动到y轴的0位置
# data:移动轴的位置到交叉轴的指定坐标  outward:不太懂  axes:0.0 - 1.0之间的值,整个轴上的比例  center:('axes',0.5) zero:('data',0.0)
ax.spines['bottom'].set_position(('data', 0))
ax.spines['left'].set_position(('data',0))
ax.spines['bottom']获取底部的轴,通过set_position方法,设置底部轴的位置,例如:ax.spines['bottom'].set_position(('data',0))表示设置底部轴移动到竖轴的0坐标位置,设置left的方法相同,效果图:

matplotlib模块数据可视化-修改坐标轴位置_第3张图片

3.3 通过axes对象设置坐标轴的显示范围和标签

# 利用axes对象设置轴线的显示范围,与plt.xlim(-1,2)和plt.ylim(-2,3)的作用相同
ax.set_xlim(-1,2)
ax.set_ylim(-2,3)
# 利用axes对象设置坐标轴的标签
ax.set_xlabel('x data')
ax.set_ylabel('y data')
与上一节中讲到的设置效果相同,但是必须通过set_xxx的方法进行设置.

注意:我python2用的matplotlib 1.3.1版本,设置没有效果,改用python3才有效果,我python3用matplotlib 2.0.2 效果图:

matplotlib模块数据可视化-修改坐标轴位置_第4张图片

3.4 通过axes对象设置刻度显示的位置

# 设置坐标轴上的数字显示的位置,top:显示在顶部  bottom:显示在底部,默认是none
ax.xaxis.set_ticks_position('top')
ax.yaxis.set_ticks_position('left')
默认x轴的刻度显示在轴线下面,y的显示在轴线左边,默认都是none,这里修改x的刻度到top顶部,效果图:

matplotlib模块数据可视化-修改坐标轴位置_第5张图片

4 完整代码及效果图

import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-3,3,50)
y1 = 2*x + 1
y2 = x**2
plt.figure()
plt.plot(x,y1)
plt.plot(x,y2,color='red',linewidth=2,linestyle='--')
# plt.xlim(-1,2)
# plt.ylim(-2,3)

ax = plt.gca() #gca 'get current axes' 获取图像的边框对象
# 设置有边框和头部边框颜色为空right、top、bottom、left
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
# 设置底边的移动范围,移动到y轴的0位置
# data:移动y轴的位置  outward:  axes:0.0 - 1.0之间的值,整个轴上的比例  center:('axes',0.5) zero:('data',0.0)
ax.spines['bottom'].set_position(('data', 0))
ax.spines['left'].set_position(('data',0))
# 利用axes对象设置轴线的显示范围,与plt.xlim(-1,2)和plt.ylim(-2,3)的作用相同
ax.set_xlim(-1,2)
ax.set_ylim(-2,3)
# 利用axes对象设置坐标轴的标签
ax.set_xlabel('x data')
ax.set_ylabel('y data')

# 设置坐标轴上的数字显示的位置,top:显示在顶部  bottom:显示在底部,默认是none
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
plt.show()

matplotlib模块数据可视化-修改坐标轴位置_第6张图片



你可能感兴趣的:(matplotlib模块数据可视化-修改坐标轴位置)