而不是默认的“盒装”轴样式,我想只有左轴和底部轴,即:

+------+         |
|      |         |
|      |   --->  |
|      |         |
+------+         +-------

这应该很容易,但我在文档中找不到必要的选项。


当前回答

另一种非全局方式的方法是使用matplotlib.pyplot。Rc_context上下文管理器,如下所示:

with plt.rc_context({
    "axes.spines.right": False,
    "axes.spines.top": False,
}):
    fig, ax = plt.subplots()
    ...

其他回答

这是官方网站推荐的Matplotlib 3解决方案:

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 2*np.pi, 100)
y = np.sin(x)

ax = plt.subplot(111)
ax.plot(x, y)

# Hide the right and top spines
ax.spines[['right', 'top']].set_visible(False)

plt.show()

如果你想经常应用它,你也可以创建一个样式表,如这里所述,并使用这些设置:

axes.spines.left:   True
axes.spines.bottom: True
axes.spines.top:    False
axes.spines.right:  False

虽然如果你想做的只是关闭轴线,接受的答案是很好的,但我建议熟悉.set()函数,因为你可以传递额外的kwargs来控制线的样式、粗细等,使你的代码更加灵活和可重用。它还减少了您需要学习的matplotlib函数的数量。

Op可以这样做:

ax.spines.top.set(visible=False)
ax.spines.right.set(visible=False)

但你也可以很容易地做这样的事情:

ax.spines.right.set(color='red', linestyle='--', linewidth=2, position=['data',2])
ax.spines.top.set(color='red', linestyle='--', linewidth=2, position=['data',5])

请在这里查看文档。

另外,这

def simpleaxis(ax):
    ax.spines['top'].set_visible(False)
    ax.spines['right'].set_visible(False)
    ax.get_xaxis().tick_bottom()
    ax.get_yaxis().tick_left()

似乎在一个轴上实现了同样的效果,而不会失去旋转标签的支持。

(Matplotlib 1.0.1;受此启发的解决方案)。

(除了这里的全面回答之外,这更像是一个扩展的评论。)


注意,我们可以分别隐藏这三个元素:

隐藏边界(又名“spine”):ax.set_frame_on(False)或ax.spines['top'].set_visible(False) 隐藏刻度:ax.tick_params(top=False) 隐藏标签:ax.tick_params(labeltop=False)