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

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

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


当前回答

[编辑]matplotlib现在(2013-10)版本1.3.0,其中包括这个

该功能实际上是刚刚添加的,您需要Subversion版本来实现它。您可以在这里看到示例代码。

我只是更新一下,现在网上有一个更好的例子。虽然还需要Subversion版本,但还没有发布。

Matplotlib 0.99.0 RC1刚刚发布,它包含了这个功能。

其他回答

[编辑]matplotlib现在(2013-10)版本1.3.0,其中包括这个

该功能实际上是刚刚添加的,您需要Subversion版本来实现它。您可以在这里看到示例代码。

我只是更新一下,现在网上有一个更好的例子。虽然还需要Subversion版本,但还没有发布。

Matplotlib 0.99.0 RC1刚刚发布,它包含了这个功能。

如果你不需要刻度之类的(例如绘制定性插图),你也可以使用这个快速的解决方案:

使轴不可见(例如使用plt.gca())。axison = False),然后用plot .arrow手动绘制它们。

如果你需要从所有的图中删除它,你可以在样式设置(样式表或rcParams)中删除脊。例句:

import matplotlib as mpl

mpl.rcParams['axes.spines.right'] = False
mpl.rcParams['axes.spines.top'] = False

如果你想去除所有刺:

mpl.rcParams['axes.spines.left'] = False
mpl.rcParams['axes.spines.right'] = False
mpl.rcParams['axes.spines.top'] = False
mpl.rcParams['axes.spines.bottom'] = False

另外,这

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;受此启发的解决方案)。

这是官方网站推荐的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()