181

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

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

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

4

9 回答 9

223

这是官方网站HERE建议的 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'].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()

在此处输入图像描述

于 2014-12-08T15:58:27.850 回答
68

或者,这

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

于 2011-11-04T15:20:04.390 回答
33

[编辑] matplotlib in now (2013-10) on version 1.3.0 其中包括这个

该功能实际上是刚刚添加的,您需要 Subversion 版本。您可以在此处查看示例代码。

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

[编辑] Matplotlib 0.99.0 RC1 刚刚发布,并包含此功能。

于 2009-05-29T09:21:20.767 回答
20

(除了这里的综合答案之外,这更像是一个扩展评论。)


请注意,我们可以相互独立地隐藏这三个元素:

  • 隐藏边框(又名“脊椎”):ax.set_frame_on(False)ax.spines['top'].set_visible(False)

  • 要隐藏刻度:ax.tick_params(top=False)

  • 要隐藏标签:ax.tick_params(labeltop=False)

于 2017-12-27T10:10:31.323 回答
15

图书馆 Seaborn 有这个内置的功能.despine()

只需添加:

import seaborn as sns

现在创建您的图表。并在最后添加:

sns.despine()

如果您查看该函数的一些默认参数值,它会删除顶部和右侧脊椎并保留底部和左侧脊椎:

sns.despine(top=True, right=True, left=False, bottom=False)

在此处查看更多文档: https ://seaborn.pydata.org/generated/seaborn.despine.html

于 2018-07-05T07:48:07.490 回答
15

如果您需要从所有绘图中删除它,您可以在样式设置(样式表或 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
于 2019-08-22T21:59:30.303 回答
12

如果您不需要刻度等(例如用于绘制定性插图),您也可以使用此快速解决方法:

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

于 2009-05-29T10:06:22.717 回答
2

以非全局方式执行此操作的另一种方法是使用matplotlib.pyplot.rc_context上下文管理器,如下所示:

with plt.rc_context({
    "axes.spines.right": False,
    "axes.spines.top": False,
}):
    fig, ax = plt.subplots()
    ...
于 2021-11-17T06:51:05.173 回答
0

如果您想经常应用此功能,您还可以按照此处所述创建样式表并使用以下设置:

axes.spines.left:   True
axes.spines.bottom: True
axes.spines.top:    False
axes.spines.right:  False
于 2021-12-06T13:35:15.203 回答