【发布时间】:2010-10-29 19:53:50
【问题描述】:
我希望只有左轴和下轴,而不是默认的“盒装”轴样式,即:
+------+ |
| | |
| | ---> |
| | |
+------+ +-------
这应该很容易,但我在文档中找不到必要的选项。
【问题讨论】:
标签: python matplotlib
我希望只有左轴和下轴,而不是默认的“盒装”轴样式,即:
+------+ |
| | |
| | ---> |
| | |
+------+ +-------
这应该很容易,但我在文档中找不到必要的选项。
【问题讨论】:
标签: python matplotlib
这是官网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()
【讨论】:
spine 对象的任何引用,我也不会猜到这个关键字。
或者,这个
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;受this启发的解决方案)。
【讨论】:
【讨论】:
mpl.subplots生成的坐标轴不能这样用吗?
(除了这里的综合答案之外,这更像是一个扩展评论。)
请注意,我们可以相互独立地隐藏这三个元素:
隐藏边框(又名“脊椎”):ax.set_frame_on(False) 或 ax.spines['top'].set_visible(False)
隐藏刻度:ax.tick_params(top=False)
隐藏标签:ax.tick_params(labeltop=False)
【讨论】:
如果您需要从所有绘图中删除它,您可以在样式设置(样式表或 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
【讨论】:
Library 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
【讨论】:
如果您不需要刻度等(例如用于绘制定性插图),您也可以使用以下快速解决方法:
使轴不可见(例如使用plt.gca().axison = False),然后使用plt.arrow手动绘制它们。
【讨论】:
以非全局方式执行此操作的另一种方法是使用matplotlib.pyplot.rc_context 上下文管理器,如下所示:
with plt.rc_context({
"axes.spines.right": False,
"axes.spines.top": False,
}):
fig, ax = plt.subplots()
...
【讨论】:
如果您想经常应用此功能,您还可以按照here 所述创建样式表并使用以下设置:
axes.spines.left: True
axes.spines.bottom: True
axes.spines.top: False
axes.spines.right: False
【讨论】: