我正在使用嵌套的GridSpecFromSubplotSpec
来创建一个嵌套的轴网格。我有两组独立的轴,一个顶部和一个底部。每组都有四个轴,排列在2x2的网格中。
这是我使用的代码和我得到的结果:
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.gridspec as gsp
fig = plt.figure()
global_gsp = gsp.GridSpec(2, 1)
for i in range(2):
axes = np.empty(shape=(2, 2), dtype=object)
local_gsp = gsp.GridSpecFromSubplotSpec(2, 2, subplot_spec=global_gsp[i])
for j in range(2):
for k in range(2):
ax = plt.Subplot(fig, local_gsp[j, k],
sharex=axes[0, 0], sharey=axes[0, 0])
fig.add_subplot(ax)
axes[j, k] = ax
for j in range(2):
for k in range(2):
ax = axes[j, k]
x = i + np.r_[0:1:11j]
y = 10*i + np.random.random(11)
ax.plot(x, y, color=f'C{i}')
ax.set_xlabel('x')
ax.set_ylabel('y')
plt.show()
正如您所看到的,顶部设置有蓝色线条,底部设置有橙色线条,蓝色线条在限制[0, 1]x[0, 1]
下被很好地表示,而橙色线条则在限制[1, 2]x[10, 11]
下表示。当我使用plt.Subplot
创建子图时,我使用sharex
和sharey
参数在每个集合中的所有四个轴上具有完全相同的比例尺(但不同集合之间的比例尺不同)。我希望避免每个轴的标签和刻度的重复。我该如何实现?
sharex
和sharey
创建子图只能保证链接轴的限制相同,但不会关闭标签和刻度标签。另一方面,plt.subplots
在创建网格时也会关闭这些内容。我的理解是,只有当所有轴同时创建时,matplotlib才会关闭标签。 - Spiros