132

我有一个简单的线图,需要将 y 轴刻度从图的(默认)左侧移动到右侧。关于如何做到这一点的任何想法?

4

4 回答 4

228

采用ax.yaxis.tick_right()

例如:

from matplotlib import pyplot as plt

f = plt.figure()
ax = f.add_subplot(111)
ax.yaxis.tick_right()
plt.plot([2,3,4,5])
plt.show()

在此处输入图像描述

于 2012-04-27T17:11:42.827 回答
116

对于正确的标签使用ax.yaxis.set_label_position("right"),即:

f = plt.figure()
ax = f.add_subplot(111)
ax.yaxis.tick_right()
ax.yaxis.set_label_position("right")
plt.plot([2,3,4,5])
ax.set_xlabel("$x$ /mm")
ax.set_ylabel("$y$ /mm")
plt.show()
于 2012-12-05T12:40:11.537 回答
64

华金的回答有效,但具有从轴左侧移除刻度的副作用。要解决此问题,tick_right()请致电set_ticks_position('both'). 修改后的示例:

from matplotlib import pyplot as plt

f = plt.figure()
ax = f.add_subplot(111)
ax.yaxis.tick_right()
ax.yaxis.set_ticks_position('both')
plt.plot([2,3,4,5])
plt.show()

结果是一个两边都有刻度的图,但右边有刻度标签。

在此处输入图像描述

于 2013-12-09T21:39:24.187 回答
27

只是有人问的情况(就像我一样),当使用 subplot2grid 时,这也是可能的。例如:

import matplotlib.pyplot as plt
plt.subplot2grid((3,2), (0,1), rowspan=3)
plt.plot([2,3,4,5])
plt.tick_params(axis='y', which='both', labelleft='off', labelright='on')
plt.show()

它将显示:

在此处输入图像描述

于 2014-04-17T17:45:19.490 回答