fig = plt.figure(figsize=(5.4, 3.4)); gs = fig.add_gridspec(2, 2, width_ratios=[1, 1.4])
ax = fig.add_subplot(gs[:, 0]) # sketch of a cuica, in cm
ax.plot([-9, -9], [0, 14], color="0.35", lw=3); ax.plot([9, 9], [0, 14], color="0.35", lw=3)
ax.plot([-9.5, 9.5], [14, 14], color=COL["membrane"], lw=3); ax.text(0, 15.6, "head", ha="center", color=COL["membrane"], fontsize=9)
ax.plot([0, 0], [14, 2], color="#8d6e63", lw=3); ax.text(0.8, 3, "stick $m_s$", fontsize=8.5, color="#5d4037")
ax.add_patch(plt.matplotlib.patches.FancyBboxPatch((-1.6, 6.5), 3.2, 2.2, boxstyle="round,pad=0.2", fc=COL["exciter"], ec="none", alpha=0.85))
ax.annotate("", xy=(4.2, 4.6), xytext=(4.2, 10.4), arrowprops=dict(arrowstyle="<|-|>", color=COL["exciter"], lw=1.6))
ax.text(4.8, 7.5, "cloth\n$v_B(t)$, $F_B$", fontsize=8.5, color=COL["exciter"], va="center")
ax.annotate("", xy=(5, 14.2), xytext=(5, 17.5), arrowprops=dict(arrowstyle="-|>", color="0.3", lw=1.4))
ax.text(5.6, 16.6, "thumb", fontsize=8.5, color="0.3")
ax.set_xlim(-10, 12); ax.set_ylim(0, 18.5); ax.set_aspect("equal"); ax.axis("off")
n0 = int(0.2 * fs); seg = vr_rub[n0:n0 + int(0.012 * fs)]
a1_, a2_ = fig.add_subplot(gs[0, 1]), fig.add_subplot(gs[1, 1])
a1_.plot(1e3 * np.arange(len(seg)) * k, seg, color=COL["exciter"], lw=1.3); a1_.axhline(0, color="0.6", lw=0.8)
a1_.set_xlabel("time (ms)", fontsize=8); a1_.set_ylabel("$v-v_B$ (m/s)", fontsize=8); a1_.set_title("relative velocity", fontsize=9)
vv = np.linspace(-0.7, 0.7, 400)
a2_.plot(vv, phi_f(vv), color="0.6", lw=1.2); a2_.plot(seg, phi_f(seg), color=COL["exciter"], lw=2.5)
a2_.set_xlabel("$v-v_B$ (m/s)", fontsize=8); a2_.set_ylabel("$\\phi$", fontsize=9)
a2_.set_title("visited: the falling part of $\\phi$", fontsize=9)
plt.tight_layout()
plt.show()