我如何删除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()