使用Aspose.Words .Net实现折线图非连续系列最新值展示的问题咨询
问题原因
你当前代码失效的核心原因是:传入带NaN的Y值数组时,NaN对应的图表点默认会被标记为不渲染,你直接使用原始数组索引挂载的标签会随隐藏点一起不显示,导致标签看不到。
修改方案
1. 补充空值渲染配置
在图表初始化逻辑中新增空值显示规则,保证非连续数据的有效点可被正常渲染:
// 原有初始化代码不变,新增以下配置 chart.DisplayBlanksAs = DisplayBlanksAs.Gap;
2. 重构标签添加逻辑
不要直接使用原始数组索引添加标签,改为遍历系列渲染后的点集合,从后往前查找首个有效点后再挂载标签:
// 原有添加系列的代码不变,替换标签添加部分的逻辑 for (int seriesIdx = 0; seriesIdx < chart.Series.Count; seriesIdx++) { var currentSeries = chart.Series[seriesIdx]; ChartDataPointCollection dataPoints = currentSeries.DataPoints; int lastValidIndex = -1; // 从后往前查找第一个Y值有效的点 for (int i = dataPoints.Count - 1; i >= 0; i--) { double yVal = dataPoints[i].YValue; if (!double.IsNaN(yVal) && !double.IsInfinity(yVal)) { lastValidIndex = i; break; } } // 给有效点添加标签 if (lastValidIndex != -1) { ChartDataLabel label = currentSeries.DataLabels.Add(lastValidIndex); label.ShowValue = true; // 可选配置:调整标签位置避免遮挡 label.Position = LegendDataLabelPosition.Right; } }
如果仅需要给最后一个系列添加最新值标签,保留你原来的var array = chart.Series.Count - 1逻辑,仅替换上述的索引查找和标签添加逻辑即可。
内容的提问来源于stack exchange,提问作者Renan Rosa
相关产品推荐
相关产品推荐

