Matplotlib 与数据区图像相对位置移动坐标轴位置

Matplotlib 移动坐标轴位置学习了根据数据在坐标轴上表示的位置来调整坐标轴的位置,这是移动坐标轴的第一种方式,接着下来介绍第二种方式,如果没有看过前文,建议先查看前面的文章,否则看本文就有点云里雾里,总是身在此山中不知在何处。

第二种方式是采用与数据区图像相对位置来定位的方式来移动,比如左边的坐标轴要离图像数据区30个像素点,那么就可以写成这样:(“outward”, 30)。如果想左边的坐标轴靠近图像数据区30个像素点呢?也非常简单只需要把30改为-30即可:(“outward”, -30)。同理,就可以更改下面的坐标轴了。可以把前面的例子修改一下,结果显示如下:

Matplotlib 与数据区图像相对位置移动坐标轴位置

可以看到左边的坐标轴离开数据区显示的图像,下面的坐标轴向上移动了,更加靠近显示区域。就是通过下面两行代码实现:

ax.spines['left'].set_position(("outward", 30))
ax.spines['bottom'].set_position(("outward", -20))

整个例子的完整代码如下:



import numpy as np
import matplotlib.pyplot as plt
from matplotlib.ticker import FuncFormatter, MaxNLocator

#
fig, ax = plt.subplots()  #创建子图

#
x = np.linspace(0, 4*np.pi, 200)
y = np.sin(x)

#
ax.plot(x, y, lw = 3, color = 'b')


#隐藏右边和上边
ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False)

#
ax.spines['left'].set_position(("outward", 30))
ax.spines['bottom'].set_position(("outward", -20))

plt.show()

最后来介绍第三种移动方式,就是按坐标轴的长度来定位原点,比如把X轴的长度当作1,那么0到1之间,就是坐标轴长度的位置,相当于百分比,0.1就相当于在坐标轴10%的位置,0.5就是坐标轴一半的位置,即是50%。同理,Y轴的位置也是按这样来设置的。采用(“axes”, 0.5)的方式,就是按坐标轴的长度来移动坐标轴,结果如下图:

Matplotlib 与数据区图像相对位置移动坐标轴位置

整个例子的代码如下:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.ticker import FuncFormatter, MaxNLocator


#
fig, ax = plt.subplots()  #创建子图

#
x = np.linspace(0, 4*np.pi, 200)
y = np.sin(x)

#
ax.plot(x, y, lw = 3, color = 'b')

#隐藏右边和上边
ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False)

#
ax.spines['left'].set_position(("axes", 0.5))
ax.spines['bottom'].set_position(("axes", 0.5))

plt.show()

通过前面三种方式的介绍,可以选择任何一种方式来移动坐标轴,关键看你自己对坐标轴那种方式比较容易让曲线显示更好看,或者说那种方式更容易定位。

基于上面几中方式,matplotlib定义了两个宏串来代表下面两种情况:

'center' -> ('axes', 0.5)
'zero' -> ('data', 0.0)

意思就是说,当调用函数set_position(‘center’)实现的功能,与调用函数set_position((“axes”, 0.5))相当。

到这里,就已经把三种移动坐标轴的方式介绍完了,如果还有什么不懂的地方,请留言。

赞(0)
未经允许不得转载:极客笔记 » Matplotlib 与数据区图像相对位置移动坐标轴位置
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址