如何使用dynesty.plotting.cornerplot将两次dynesty运行结果绘入同一张角图
在同一张角图中对比两次dynesty运行结果
要实现两次dynesty结果的同图对比,核心是复用第一次绘图生成的matplotlib.figure.Figure对象,让第二次绘图叠加在同一张图上。以下是具体操作步骤和代码示例:
1. 准备依赖和结果对象
确保你已经导入所需模块,并且持有两次dynesty运行得到的Results实例(假设分别为results1和results2):
import matplotlib.pyplot as plt from dynesty import plotting as dyplot
2. 绘制第一组结果的基础角图
先绘制第一组结果,同时保存返回的图对象,后续用来叠加第二组结果:
# 绘制第一组结果,自定义颜色、参数标签和标题样式 fig, axes = dyplot.cornerplot(results1, color='darkblue', labels=['参数A', '参数B', '参数C'], # 替换为你的实际参数名称 show_titles=True, title_kwargs={'fontsize': 10}, label_kwargs={'fontsize': 12})
3. 叠加第二组结果到同一张图
调用cornerplot时,通过fig参数传入之前生成的图对象,同时设置差异化的视觉参数区分两组结果:
# 叠加第二组结果,关闭重复标题、调整透明度避免遮挡 dyplot.cornerplot(results2, fig=fig, # 复用已有的图对象,实现同图叠加 color='crimson', labels=['参数A', '参数B', '参数C'], show_titles=False, # 避免重复显示标题 label_kwargs={'fontsize': 12}, plot_kwargs={'alpha': 0.6}) # 设置透明度,让重叠区域可见
4. 添加图例区分两组结果
手动给角图添加图例,方便识别不同的运行结果:
# 在任意子图上添加图例,这里选择左上角子图 axes[0, 0].legend(['第一次运行结果', '第二次运行结果'], loc='upper right') # 显示或保存最终对比图 plt.show() # plt.savefig('dynesty_corner_comparison.png', dpi=300, bbox_inches='tight')
关键参数说明
fig:指定已有的Figure对象,是实现同图叠加的核心参数。color:设置不同颜色区分两组结果,建议选择对比度高的配色。alpha:调整透明度,避免两组曲线完全遮挡,提升重叠区域的可读性。show_titles:第二次绘图时关闭,避免重复显示标题造成界面混乱。
注意:如果两次运行的参数数量、顺序不一致,需要先统一参数维度和顺序,否则无法正确叠加。
内容的提问来源于stack exchange,提问作者Gwyne Druite
相关产品推荐
相关产品推荐

