如何在循环中共享x轴?

2 投票
1 回答
2803 浏览
提问于 2025-04-18 10:08

我在用循环创建图表,我希望这些图表能共享它们的x轴。下面是代码的一个例子。当然,val和要绘制的函数会更复杂。我希望所有的子图都能共享x轴。

import matplotlib.pyplot as plt
import numpy as np

val = [0.1, 0.2, 0.3]
nplots = len(val)
plt.figure()
for i, alpha in enumerate(val):
    plt.subplot(nplots,1,i+1)
    plt.plot(np.linspace(0,1,100), a * np.linspace(0,1,100)**2)
plt.show()

1 个回答

3

如果我理解这个问题没错的话,这里有一个示例可能会对你有帮助:

http://matplotlib.org/examples/pylab_examples/shared_axis_demo.html

在你的情况下,这个示例是怎么做的呢?

fig = plt.figure()
ax0 = plt.subplot(nplots,1,1)
plt.plot(np.linspace(0,1,100), a * np.linspace(0,1,100)**2)
for i, alpha in enumerate(val):
    plt.subplot(nplots,1,i+2,sharex=ax0)
    plt.plot(np.linspace(0,1,100), a * np.linspace(0,1,100)**2)
plt.show()

编辑: 我更新了自己的回答,提供一个更优雅的解决方案,可能会让提问者喜欢:

vals = np.linspace(0,1,3)
nplots = len(vals)
fig, axs = plt.subplots(nrows=nplots, ncols=1, sharex=True)
for i, alpha in enumerate(vals):
    axs[i].plot(np.linspace(0,1,100), alpha * np.linspace(0,1,100)**2)
plt.show()

撰写回答