我正在尝试绘制以下内容,我注意到 y 轴上的标签全部位于彼此之上。
如何避免这种情况?
我使用下面的代码来绘制图:
plt.figure(figsize=(18, 7))
fig, ax1 = plt.subplots(figsize=(18, 7))
for i in range(0, len(df_data), 1):
ax2 = ax1.twinx()
_df_data = df_data[i][(df_data[i].wav_um > 9.29) & (df_data[i].wav_um < 9.51)].reset_index(drop=True)
ax1.plot(_df_data.wav_um, _df_data.mircat_auc, 'o--', linewidth=1, c = 'blue', mfc= 'lightblue', mec='black', ms=4, alpha=0.7, label=hdf5_file_locations[i])
ax2.plot(_df_data.wav_um, _df_data.thorlabs_pw_mw, 'o--', linewidth=1, c = 'orange', mfc= 'salmon', mec='gray', ms=3, alpha=0.7)
ax1.set_xlabel(r'Wavelength [$\mu m$]', fontsize = 14)
ax1.set_ylabel(r' AUC', fontsize = 14, color='blue')
ax2.set_ylabel(r' power [mW]', fontsize = 14, color='orange')
ax1.tick_params(axis="x", labelsize=15)
ax2.grid(which='both', color='0.9', linestyle='-', linewidth=1)
我无法运行代码,因为
df_data
对象未定义。然而,仅通过查看代码,我可以告诉您应该将轴克隆 ax2 = ax1.twinx()
移出循环。现在,您在每次迭代时都会创建一个新的双轴,而实际上您只需要一个。所以请尝试以下方法:
plt.figure(figsize=(18, 7))
fig, ax1 = plt.subplots(figsize=(18, 7))
ax2 = ax1.twinx()
for i in range(0, len(df_data), 1):
_df_data = df_data[i][(df_data[i].wav_um > 9.29) & (df_data[i].wav_um < 9.51)].reset_index(drop=True)
ax1.plot(_df_data.wav_um, _df_data.mircat_auc, 'o--', linewidth=1, c = 'blue', mfc= 'lightblue', mec='black', ms=4, alpha=0.7, label=hdf5_file_locations[i])
ax2.plot(_df_data.wav_um, _df_data.thorlabs_pw_mw, 'o--', linewidth=1, c = 'orange', mfc= 'salmon', mec='gray', ms=3, alpha=0.7)
ax1.set_xlabel(r'Wavelength [$\mu m$]', fontsize = 14)
ax1.set_ylabel(r' AUC', fontsize = 14, color='blue')
ax2.set_ylabel(r' power [mW]', fontsize = 14, color='orange')
ax1.tick_params(axis="x", labelsize=15)
ax2.grid(which='both', color='0.9', linestyle='-', linewidth=1)
我希望这有帮助!