我如何删除matplotlib中的顶部和右侧轴?

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

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

这应该很容易,但我无法在文档中find必要的选项。

matplotlib现在(2013-10)在1.3.0版本,包括这个

这个能力实际上只是增加了,你需要Subversion的版本。 你可以在这里看到示例代码。

我只是更新说现在有一个更好的例子 。 尽pipe如此,仍然需要Subversion版本,但还没有发布。

Matplotlib 0.99.0 RC1刚刚发布,并包含此function。

或者,这个

 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; 由此启发的解决scheme)。

这是从官方网站推荐的Matplotlib 2.0解决scheme:

 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'].set_visible(False) ax.spines['top'].set_visible(False) # Only show ticks on the left and bottom spines ax.yaxis.set_ticks_position('left') ax.xaxis.set_ticks_position('bottom') plt.show() 

在这里输入图像说明

如果你不需要蜱虫等(例如绘制定性的插图),你也可以使用这个快速的解决方法:

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

这是更简单,但可能会做的伎俩:

remove_border()