删除所有Matplotlib图的顶部和右侧轴(不只是一个图)[重复]

kdfy810k  于 2023-05-07  发布在  其他
关注(0)|答案(2)|浏览(129)

此问题已在此处有答案

How can I remove the top and right axis in matplotlib?(10个答案)
3天前关闭。
这篇文章是编辑并提交审查3天前.
我有类似于下面示例的Python代码来删除用Matplotlib创建的图的顶部和右侧轴。所有打印轴的刻度线也将被删除。

import matplotlib.pyplot as plt
plt.close('all')

plt.figure(1)
plt.plot(x1, y1)
plt.grid()

plt.figure(2)
plt.plot(x2, y2)
plt.grid()

plt.figure(3)
plt.plot(x3, y3)
plt.grid()

ax = plt.gca()
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
plt.tick_params(axis='both', bottom='off', top='off', left='off', right='off')

plt.show()

不幸的是,所需的效果只适用于最后一个绘图图。要删除所有图的顶部/右侧轴和刻度线,我必须在每个图之后放置以下代码:

ax = py.gca()
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
py.tick_params(...)

是否可以使用Matplotlib一次性自定义所有图形的轴?我不想只删除一个图形的轴,我想删除所有图形的顶部和右侧轴,而不必多次写入.set_visible()

xqnpmsa8

xqnpmsa81#

至少当前版本的Matplotlib也通过matplotlibrc配置文件支持这一点:

axes.spines.top    : False
axes.spines.right  : False

或者,使用rcParams

import matplotlib as mpl
mpl.rcParams["axes.spines.right"] = False
mpl.rcParams["axes.spines.top"] = False

根据您的配置,您可能还必须删除顶部/右侧轴(xtick.top : Falseytick.right : False)处的刻度。

pwuypxnk

pwuypxnk2#

你当然可以!手动方式是通过设置matplotlib的rcParams。例如:

import matplotlib as mpl
mpl.rcParams["axes.labelsize"] = 12

您需要在绘图之前执行此操作。
参见docs here
话虽如此,我强烈推荐seaborn来定制你的图。至少这会给予你一个良好的开端。您可以使用rcParams进一步自定义它们。

相关问题