如何在 Matplotlib 中取消两个轴的 ‘sharex’ 或 ‘sharey’?

如何在 Matplotlib 中取消两个轴的 ‘sharex’ 或 ‘sharey’?

在 Matplotlib 中,轴类型有多种,其中包括sharex和sharey。当我们创建多个subplot时,有时需要共享同一轴,这是很方便的。但是,如果后来需要取消这种共享轴设置,该怎么办呢?

以下是一些简单的方法,可以取消 Matplotlib 中两个轴的 ‘sharex’ 或 ‘sharey’。

取消共享轴后重新绘制

首先,你可以绘制一个不共享轴的新subplot,用于代替原来的共享轴,然后重新绘制数据。这是一种简单而直接的方法:

import matplotlib.pyplot as plt

fig, (ax1, ax2) = plt.subplots(nrows=2, sharex=True)
# 共享x轴

# 绘制数据至ax1和ax2

ax1.set_ylim(0, 1.5)
ax2.set_ylim(2, 3.5)

# 取消共享x轴
ax2._sharex = None
plt.subplots_adjust(hspace=0.5) # 调整子图之间的间距

plt.show()

上述示例中,我们首先使用plt.subplots()函数创建两个子图。我们将这两个子图的x轴共享,所以它们在x轴方向上会有相同的刻度标签。接着,我们在两个子图中绘制了一些数据,并设置了它们的y轴上限。然后,我们取消了ax2的共享x轴设置,这时候它的y轴刻度就不会再受到ax1的影响。最后,我们使用plt.subplots_adjust()函数调整两个子图之间的垂直间距,并显示这两个子图。

使用子图网格参数

如果你想在创建子图时就避免共享轴,可以使用subplot网格参数的的sharexsharey属性。其默认值为False,意味着该轴不与任何其他子图共享。可以将sharexsharey属性设为None,即可取消轴共享:

import matplotlib.pyplot as plt

fig, (ax1, ax2) = plt.subplots(nrows=2, sharex=False) # 不共享x轴

# 绘制数据至ax1和ax2

ax1.set_ylim(0, 1.5)
ax1.set_xlim(0, 5)
ax2.set_ylim(2, 3.5)
ax2.set_xlim(0, 5)

# 取消ax1和ax2的共享x轴
ax1.sharex = None
ax2.sharex = None

plt.subplots_adjust(hspace=0.5) # 调整子图之间的间距

plt.show()

在此示例中,我们使用sharex=False参数创建了两个不共享x轴的子图。接着,我们在两个子图中绘制数据,并设置它们的y轴上限和x轴上限,接着我们取消了两个子图的共享x轴设置(ax1.sharexax2.sharex均为None)。最后,我们使用plt.subplots.adjust()函数调整两个子图之间的垂直间距,并显示这两个子图。

取消轴共享

此外,你还可以取消特定轴(如x轴或y轴)的共享。以下是基于轴对象的示例代码:

import matplotlib.pyplot as plt

fig, (ax1, ax2) = plt.subplots(nrows=2, sharex=True)

# 绘制数据至ax1和ax2

ax1.set_ylim(0, 1.5)
ax1.set_xlim(0, 5)
ax2.set_ylim(2, 3.5)
ax2.set_xlim(0, 5)

# 取消ax2的共享x轴
ax2.get_shared_x_axes().remove(ax1)

plt.subplots_adjust(hspace=0.5) # 调整子图之间的间距

plt.show()

在这个例子中,我们也是首先使用plt.subplots()函数创建了两个x轴共享的子图。接着,我们在两个子图中绘制了数据,设置了它们的y轴和x轴上限。最后,我们使用ax2.get_shared_x_axes()方法获取在当前子图中与ax2共享x轴的其他轴对象,并将其移除。这时候,ax2就不再与ax1共享x轴刻度了。最后,我们使用plt.subplots_adjust()函数调整两个子图之间的间距,并显示这些子图。

结论

无论哪种方法,都能在 Matplotlib 中取消两个轴的 ‘sharex’ 或 ‘sharey’。你可以选择基于需要,采用最适合你的方法来实现。希望这篇文章能够帮助您了解Matplotlib中取消轴共享的几种方法。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程