主要是要保证每个子图的legend和字体大小、刻度大小均正常显示:
import numpy as np
import matplotlib.pyplot as plt
import datetime
def pic2(t_u, res1, res2,k1,k2,k1s,k2s):
# 绘制图像
plt.rcParams['font.family'] = 'serif'
plt.rcParams['font.serif'] = 'Times New Roman'
fig, axes = plt.subplots(nrows=2, ncols=1,figsize=(6.4, 5.5)) #默认:[6.4 4.8]
fig_size = fig.get_size_inches()
print("图的大小:", fig_size)
plt.grid(linestyle="--", color="gray", linewidth="0.5", axis="both")
lines1, labels1 = [], []
for i in range(len(res1[:, 0])):
line, = axes[0].plot(t_u, res1[i, :], markerfacecolor='none')
lines1.append(line)
labels1.append(f'$\kappa_1=${k1s[i]}, $\kappa_2=${k2}')
axes[0].legend(lines1, labels1, loc='best', ncol=1) # Legend for the first subplot
axes[0].grid(linestyle="--", color="gray", linewidth="0.5", axis="both")
axes[0].tick_params(axis='both', labelsize=12)
# axes[0].set_xlabel('Delay (s)', fontsize=15, fontweight='bold', labelpad=0)
# axes[0].set_ylabel('Delay utility', fontsize=15, fontweight='bold', labelpad=0)
lines2, labels2 = [], []
for i in range(len(res2[:, 0])):
line, = axes[1].plot(t_u, res2[i, :], markerfacecolor='none',)
lines2.append(line)
labels2.append(f'$\kappa_1=${k1}, $\kappa_2=${k2s[i]}')
axes[1].legend(lines2, labels2, loc='best', ncol=1) # Legend for the second subplot
axes[1].tick_params(axis='both', labelsize=12)
plt.grid(linestyle="--", color="gray", linewidth="0.5", axis="both")
plt.xlabel('Delay (s)', fontsize=17, fontweight='bold', labelpad=0)
# plt.ylabel('Delay utility', fontsize=17, fontweight='bold', labelpad=0)
fig.text(0.03, 0.4,'Delay utility', fontsize=17, fontweight='bold', rotation='vertical')
# plt.title('Total QoE at Time Slot')
a = datetime.datetime.now().strftime("%Y-%m-%d-%H-%M-%S")
plt.savefig("utility_kappa_" + a, dpi=600, bbox_inches='tight', pad_inches=0.01)
# 显示图形
plt.show()
运行结果