问题描述
我一直在尝试绘制一个图形,该图形具有 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',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()