Matplotlib 移动坐标轴位置

前面学习过隐藏坐标轴的方式来实现三Y轴的显示,并没有移动过坐标轴的位置,但是有时候需要移动坐标到某些位置,这样看曲线更加方便,比如像下图:

Matplotlib 移动坐标轴位置

这时看到抛物线曲线分布在Y轴的两边,Y轴就是一条对称轴,分析起来就更方便了。本文将要介绍怎么样来实现坐标轴的移动。

要实现坐标轴的移动,首先要理解matplotlib里坐标轴的布局,如下图所示:

Matplotlib 移动坐标轴位置

从图中可以看到,默认是有四个坐标轴线,简称为spines,在python里就是放到一个spines的字典里,这四个轴通过top、bottom、left、right来访问,比如要访问上面的坐标轴,通过spines[“top”]就可以访问了。要想实现前面的图那样显示坐标轴,主要要解决两个问题,第一个问题,就是要隐藏上面和右边两条没有用到的坐标轴;第二个问题是移动左边和下面的坐标轴的位置。

隐藏的问题,在前面的文章已经学习过,这个比较容易实现,就是调用set_visible()函数就可以解决了,代码如下:



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)

plt.show()

这时运行代码之后,看到的结果如下图:

Matplotlib 移动坐标轴位置

目前只剩下左边和下面的坐标轴了,只需要对坐标轴进行移动,就解决问题了。接着下来通过调用set_position函数就可以移动剩下的坐标轴,不过它的参数有几种方式,先来看第一种方式,根据数据的位置来调整坐标轴,意思就是说,把坐标轴原点移动到X轴上和Y轴上标记的刻度位置,比如说把左边的Y轴移动X轴的0.5位置,调用下面的代码:

ax.spines['left'].set_position(("data", 0.5))

使用元组(“data”, 0.5)来描述,第一个元素表示它是根据数据位置0.5来移动。

同理,把下面的X轴移动1的位置,调用下面的代码:

ax.spines['bottom'].set_position(("data", 1))

通过这两行代码,就可以确定坐标轴原点的位置在数据(0.5,1)地方,如下图:

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(("data", 0.5))
ax.spines['bottom'].set_position(("data", 1))


plt.show()
赞(0)
未经允许不得转载:极客笔记 » Matplotlib 移动坐标轴位置
分享到: 更多 (0)

评论 抢沙发

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