此问题在此处已有答案:
Improve subplot size/spacing with many subplots(9个答案)
11天前关闭。
我无法使用对数标度插值数据,我想出的唯一解决方案是在同一个图中绘制插值函数和图形,但使用不同的xscale。它工作正常,但当在右侧添加另一个图(子图)时,ylabel与“主”图重叠。我可以做些什么吗?这是代码:
# Grafico di BOde e frequenza di taglio
popt, pcov = curve_fit(Lin, LOGf_der[0: 4], A_der[0: 4])
x = np.linspace(2, 4, 100)
RESIDUI = Residui(LOGf_der[0:4], A_der[0:4], popt[0], popt[1])
xRES = np.linspace(LOGf_der[0], LOGf_der[4], len(RESIDUI))
fig, axs = plt.subplots(1, 2, figsize=(20, 10))
ax = axs[0]
ax.scatter(f_der, A_der)
ax.tick_params(axis="both", which="major", labelsize=15)
ax.set_xscale('log')
ax.legend(loc="upper left", fontsize=16)
ax.grid(True, which='both')
ax.set_xlabel("Frequenza Hz", fontsize = 16)
ax.set_ylabel("Guadagno A", fontsize = 16)
ax.set_title("Grafico di Bode", fontsize = 18)
ax = ax.twiny()
ax.plot(LOGf_der, A_der, '--o', label="Dati sperimentali")
ax.plot(LOGf_VTC, A_VTC, label="VTC", c = 'purple')
ax.plot(x, Lin(x, popt[0], popt[1]), color="red", lw=1.4, label="Interpolazione lineare")
ax.tick_params(axis="both", which="major", labelsize=15)
ax.axis('off')
ax.legend(fontsize = 16)
fig.tight_layout()
ax = axs[1]
ax.scatter(xRES, RESIDUI, s = 80, label= ("Residui"))
ax.hlines(0, 1.9, 4.3, color="orange", linestyle="dashed", lw = 3, label=(r"$f(x) = 0$"))
ax.grid(True)
ax.set_xlabel(r"$\log_{10} f, Hz$", fontsize=16)
ax.set_ylabel("Residui", fontsize=16)
ax.set_title("Grafico dei residui", fontsize=18)
ax.tick_params(axis="both", which="major", labelsize=15)
ax.legend(fontsize = 16)
字符串
x1c 0d1x的数据
这就是我得到的。我怎么能解决这个问题?谢谢!
1条答案
按热度按时间g6baxovj1#
希望你做得很好!感谢您提供的情节代码-重叠的标签肯定会令人沮丧的工作。
看起来你的第二个子图上的ylabel被绕成了两条线,占用了更多的垂直空间。不过没问题,我们可以通过一些调整来解决这个问题。
关键是使用subplots_adjust在子图之间添加一些填充。在创建图形后尝试添加这行:
字符串
这应该会创造一些喘息的空间,防止ylabels重叠。你可以随时上下调整
hspace
的值,直到找到正确的平衡。型
让我知道,如果这样做的伎俩,或者如果你有任何其他问题!绘图很好地需要一些技巧。但采取一些小步骤,如添加一些填充可以走很长的路。希望这有助于解决您的标签问题-随时联系,如果有任何其他的东西出现。