Python:如何将参数路径叠加到等高线图并标注a0值
核心实现逻辑
两类绘图的物理坐标完全同源:等高线图x轴为r_sq、y轴为n_th,你提前计算的rsq_fp、nth_fp数组本身就是对应这两个轴的物理坐标值,不存在跨坐标系转换的额外工作量,直接在已有的等高线图轴对象上叠加路径与标注即可。
具体操作步骤
- 调整原有等高线代码的执行顺序:生成等高线、色条、轴标签等基础内容后不要立刻调用
plt.show(),保留返回的ax坐标轴对象用于后续叠加绘图 - 在等高线的轴对象上绘制物理参数路径:将
rsq_fp作为x坐标、nth_fp作为y坐标传入ax.plot(),选用和等高线色彩区分度高的样式(比如粗黑虚线)避免和等高线混叠,示例代码:ax.plot(rsq_fp, nth_fp, color='black', linewidth=2, linestyle='--', label='物理允许参数路径') - 添加离散点的
a0值标注:不要逐点标注全部100个采样值(会造成严重文字重叠),按固定间隔取采样点标注,同时在路径上打小型散点标记标注位置,示例代码:# 每隔10个采样点做一次标注,可根据实际图面密度调整间隔大小 for idx in range(0, len(a_0_list), 10): x = rsq_fp[idx] y = nth_fp[idx] # 标记路径上的离散点 ax.scatter(x, y, color='black', s=15) # 标注对应a0值,位置沿y轴轻微上移避免压到路径线 ax.text(x, y + 0.03, f'$a_0={a_0_list[idx]:.2f}$', fontsize=10) - 调整坐标轴范围避免路径被裁剪:你原有等高线的
n_th范围仅到0.5,但实际路径终点的n_th可达1.6,需要手动扩展轴范围覆盖所有绘图内容,示例代码:ax.set_xlim(left=0, right=max(np.max(r_field), np.max(rsq_fp))) ax.set_ylim(bottom=0, top=max(np.max(n_field), np.max(nth_fp))) - 补充图例后再调用
plt.show()完成最终绘图
注意事项
- 你原本单独的一维曲线图是将
r_sq、n_th都作为因变量、以a0为x轴绘制的,这套坐标系仅用于单独展示参数随a0的变化趋势;叠加到等高线图时,a0仅作为路径上的标记参数,不再作为坐标轴维度使用,不需要做额外的坐标映射。 - 标注的偏移量、取点间隔可以根据实际出图效果调整,保证文字不重叠、不压线即可。
内容的提问来源于stack exchange,提问作者J.Agusti
相关产品推荐
相关产品推荐

