如何在热力图样式的散点图上叠加特定值的等高线?
在Heatmap样式散点图上叠加特定值等高线的实现方法
核心思路
使用Julia的Plots.jl包中contour!()函数,在已绘制的图上叠加等高线,并通过levels参数指定需要显示的特定数值。根据数据类型(网格/散点)分两种场景处理:
场景1:数据为网格格式
如果x、y是网格坐标向量,matrix是对应网格点的数值矩阵,直接叠加等高线即可:
using Plots # 替换为你的实际网格数据 x = 1:10 y = 1:10 matrix = rand(10, 10) # 绘制heatmap样式的散点图 plot = scatter(x, y, matrix, st=:heatmap, xlabel="x vals ()", ylabel="y vals ()", title="blah blah") # 叠加特定值的等高线,示例指定0.3和0.7两个值 contour!(x, y, matrix, levels=[0.3, 0.7], color=:black, linewidth=2) display(plot)
场景2:数据为散点格式
如果x、y是随机散点坐标,需先将数值插值到网格上,再绘制等高线:
using Plots, Interpolations # 替换为你的实际散点数据 x = rand(100) y = rand(100) matrix = rand(100) # 生成插值用的网格 xi = range(minimum(x), maximum(x), length=50) yi = range(minimum(y), maximum(y), length=50) # 对散点数值进行网格插值 itp = interpolate((x, y), matrix, Gridded(Linear())) zi = itp(xi, yi) # 绘制heatmap样式的散点图 plot = scatter(x, y, matrix, st=:heatmap, xlabel="x vals ()", ylabel="y vals ()", title="blah blah") # 叠加特定值的等高线 contour!(xi, yi, zi, levels=[0.3, 0.7], color=:red, linewidth=2) display(plot)
关键参数说明
contour!():原地修改已有绘图对象实现图层叠加,若需新建图使用contour()。levels:接受数值数组,精确指定需要显示等高线的目标值。color/linewidth:调整等高线的颜色和线条粗细,优化可视化效果。
内容的提问来源于stack exchange,提问作者Dharmik
相关产品推荐
相关产品推荐

