import pandas as pd
import numpy as np
from scipy.interpolate import interp1d
import matplotlib.pyplot as plt
df1 = pd.read_csv('D:/KBFiles毕业论文/run-2025_03_09_00_07_Multirotor_CNN_GAP_DDPGFD_tb_logs_DDPGFD_1-tag-rollout_ep_len_mean.csv')
df2 = pd.read_csv('D:/KBFiles毕业论文/run-2025_03_12_08_45_Multirotor_CNN_GAP_DDPGFD5_tb_logs_DDPGFD_1-tag-rollout_ep_len_mean.csv')
df3 = pd.read_csv('D:/KBFiles毕业论文/run-2025_03_13_15_13_Multirotor_CNN_GAP_DDPGFD6_tb_logs_DDPGFD_1-tag-rollout_ep_len_mean.csv')
for df in [df1, df2, df3]:
df.sort_values('Step', inplace=True)
df.drop_duplicates('Step', inplace=True)
common_min = max(df1['Step'].min(), df2['Step'].min(), df3['Step'].min())
common_max = min(df1['Step'].max(), df2['Step'].max(), df3['Step'].max())
new_steps = np.linspace(common_min, common_max, 1000)
def interpolate_data(df, new_steps):
f = interp1d(df['Step'], df['Value'], kind='linear', fill_value='extrapolate')
return f(new_steps)
interp_values1 = interpolate_data(df1, new_steps)
interp_values2 = interpolate_data(df2, new_steps)
interp_values3 = interpolate_data(df3, new_steps)
interpolated_df = pd.DataFrame({
'Step': new_steps,
'Value1': interp_values1,
'Value2': interp_values2,
'Value3': interp_values3
})
plt.figure(figsize=(10, 6))
plt.plot(interpolated_df['Step'], interpolated_df['Value1'], color='blue', label='DDPGFD')
plt.plot(interpolated_df['Step'], interpolated_df['Value2'], color='green',label='DDPGFD5')
plt.plot(interpolated_df['Step'], interpolated_df['Value3'], color='red',label='DDPGFD6')
plt.xlabel('Step')
plt.ylabel('Episode Length Mean')
plt.title('Aligned Training Progress via Linear Interpolation')
plt.legend()
plt.grid(True)
plt.show()