在 matplotlib 中绘制 3 个不同的 x 轴和相同的 y 轴?

Plot with 3 different x axis and the same y axis in matplotlib?

我一直在尝试绘制一个具有 3 个不同 x 轴但 y 轴相同且相同的连续曲线的图形。 x 轴的第一部分上升到一个点(图中为零)。轴的第二部分采用不同的比例(在图中显示在顶部)。第三部分从第一部分结束的地方开始(在本例中为零)。我想不间断地绘制曲线。图片中的东西可以在 matplotlib 中完成吗?提前谢谢你。

有点不清楚中心部分应该是什么样子,以及那个轴应该有什么样的比例。但一般结构可以创建如下:

import matplotlib.pyplot as plt
import numpy as np

fig, (ax1, ax2, ax3) = plt.subplots(ncols=3, sharey=True,
                                    gridspec_kw={'wspace': 0, 'width_ratios': [3, 2, 3]})
for side in ('top', 'right'):
    ax1.spines[side].set_visible(False)
ax2.spines['bottom'].set_visible(False)
for side in ('left', 'right', 'top'):
    ax3.spines[side].set_visible(False)
ax2.xaxis.tick_top()
for side in ('left', 'right'):
    ax2.spines[side].set_linestyle((0, (4, 4)))
ax2.set_zorder(2)  # to show the dashed axes
ax2.tick_params(axis='y', left=False, right=False)
ax3.tick_params(axis='y', left=False, right=False)

ax1.set_xlim(-2.5, 0)
ax2.set_xlim(-1, 1)
ax3.set_xlim(0, 2.5)

x = np.linspace(-2.5, 2.5, 500)
y = np.sin(np.pi * x * np.abs(x))
ax1.plot(x, y)
ax2.plot(x, y)
ax3.plot(x, y)
plt.tight_layout()
plt.show()