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

问题描述

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

enter image description here

解决方法

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

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',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()

example plot

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...