如何在Kusto折线图中显示Y轴全范围的每条参考线及对应数值
如何在Kusto折线图中显示Y轴全范围的每条参考线及对应数值
嗨,我来帮你搞定这个Kusto折线图的需求~ 你想要在折线图上为Y轴的每个刻度值都加上水平参考线,同时显示对应的数值,对吧?
先理下思路:Kusto原生的render linechart没有直接一键添加所有Y轴刻度参考线的参数,但我们可以通过构造参考线数据集+合并原始数据的方式来实现这个效果,下面是具体的解决方案:
需求效果对比
- 当前折线图效果:仅展示业务折线,Y轴有刻度但无对应水平参考线和数值标注
- 期望效果:折线图上覆盖Y轴每个刻度的水平参考线,每条线上还标注了对应的数值
修改后的KQL查询代码
// 第一步:获取你的原始业务数据 let my_data = myquery | order by Date asc; // 第二步:动态生成Y轴需要的所有参考线数值(自动适配数据的Y轴范围) let y_range = my_data | summarize y_min = min(Stage_Num), y_max = max(Stage_Num); let y_values = range(y_range.y_min, y_range.y_max, 1); // 第三步:生成参考线数据集——为每个Y值创建贯穿所有X轴(Place)的水平线 let reference_lines = my_data | summarize min_Place = min(Place), max_Place = max(Place) | mv-expand Stage_Num = y_values to typeof(int) | extend Place = range(min_Place, max_Place, 1) | mv-expand Place to typeof(int) | extend is_reference = 1, Value_Label = strcat(Stage_Num); // 第四步:合并原始数据和参考线数据,渲染图表 my_data | extend is_reference = 0 | union reference_lines | render linechart with ( legend = hidden, title = "myracer", xcolumn=Place, xaxis=linear, xtitle="Location", ycolumns=Stage_Num, ytitle="Stage", series=is_reference, // 区分业务折线和参考线系列 linewidth=2, // 业务折线的宽度 linestyle="solid,dashed", // 业务线用实线,参考线用虚线 datalabels=Value_Label // 在参考线上显示对应的Y轴数值 )
代码逻辑解释
- 原始数据部分:
my_data就是你原来的查询逻辑,保持不变即可。 - 动态Y轴范围:通过
y_range自动获取数据中Stage_Num的最小和最大值,生成所有需要添加参考线的Y值,不用手动写死范围。 - 参考线数据构造:
reference_lines为每个Y值生成覆盖所有Place(X轴)的点,这样渲染出来就是一条完整的水平线。 - 合并与渲染:用
union把原始数据和参考线数据合并,通过is_reference字段区分两个系列,分别设置线条样式,最后用datalabels显示数值标签。
额外优化提示
- 如果你的Y轴不是整数(比如有小数刻度),可以调整
range的步长(比如把1改成0.5)。 - 要是想让数值标签更醒目,可以尝试添加
datalabelsfontsize=12这类参数(不同Kusto版本支持度可能略有差异)。
备注:内容来源于stack exchange,提问作者chocalaca
相关产品推荐
相关产品推荐

