在pymarl中,我们经常会使用到绘图脚本plot_result.py,但是有时候对该脚本的用法了解并不全面,重写的话由太费事,所以总结了一下。
该脚本用于从指定目录中加载强化学习实验结果,并生成相应的图表。
- 基本用法
命令行运行
python plot_results.py --path <results_directory> --metric <metric_name>
<results_directory>
:包含实验结果的文件夹路径。<metric_name>
:要绘制的指标名称(默认为test_return_mean
)。
示例
python plot_results.py --path ./results --metric test_return_mean
- 可选参数
2.1 过滤算法和环境
--filter_by_algs
:仅显示包含指定字符串的算法。--filter_by_envs
:仅显示包含指定字符串的环境。
示例
python plot_results.py --path ./results --metric test_return_mean --filter_by_algs PPO SAC --filter_by_envs HalfCheetah
2.2 设置保存路径
--save_dir
:指定保存图表的文件夹路径(默认为当前工作目录)。
示例
python plot_results.py --path ./results --metric test_return_mean --save_dir ./plots
2.3 设置 Y 轴范围
--y_min
和--y_max
:设置 Y 轴的最小值和最大值。
示例
python plot_results.py --path ./results --metric test_return_mean --y_min 0 --y_max 1000
2.4 对数尺度
--log_scale
:启用 Y 轴的对数尺度。
示例
python plot_results.py --path ./results --metric test_return_mean --log_scale
2.5 数据平滑
--smoothing_window
:指定平滑窗口大小以平滑数据曲线。
示例
python plot_results.py --path ./results --metric test_return_mean --smoothing_window 10
2.6 只显示最佳配置
--best_per_alg
:仅绘制每种算法的最佳配置结果。
示例
python plot_results.py --path ./results --metric test_return_mean --best_per_alg
- 完整示例
示例 1:绘制所有实验结果并保存图表
python plot_results.py --path ./results --metric test_return_mean --save_dir ./plots
示例 2:过滤特定算法和环境
python plot_results.py --path ./results --metric test_return_mean --filter_by_algs PPO SAC --filter_by_envs HalfCheetah Ant
示例 3:设置 Y 轴范围和对数尺度
python plot_results.py --path ./results --metric test_return_mean --y_min 0 --y_max 1000 --log_scale
示例 4:平滑数据并只显示最佳配置
python plot_results.py --path ./results --metric test_return_mean --smoothing_window 10 --best_per_alg
- 脚本功能总结
- 加载结果:从指定目录加载所有实验结果文件(
metrics.json
和config.json
)。 - 过滤数据:根据算法名称和环境名称筛选数据。
- 聚合数据:对相同配置的结果进行平均和标准差计算。
- 平滑数据:对时间序列数据进行滑动窗口平滑处理。
- 绘制图表:生成带有置信区间的折线图,并支持多种自定义选项(如 Y 轴范围、对数尺度等)。
- 保存图表:将生成的图表保存为 PDF 文件。
- 注意事项
- 确保实验结果文件夹中包含
metrics.json
和config.json
文件。 - 如果没有指定
--save_dir
,图表会保存在当前工作目录。 - 如果没有找到匹配的指标或配置文件,脚本会发出警告并跳过相关文件。