You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LiveCharts2在Avalonia中绘制金融数据:如何取消缺失点插值?

解决LiveCharts2笛卡尔图金融数据自动插值问题

在Avalonia UI中使用LiveCharts2绘制日更金融数据时,周末/节假日的缺失数据会被自动插值连接,要实现相邻有效数据点直接连接的效果,最简便的方案是改用**分类轴(CategoricalAxis)**替代默认的数值型时间轴,具体实现如下:

1. 修改X轴配置

将ViewModel中的Axis替换为CategoricalAxis,让图表按数据点的自然顺序渲染,而非按时间数值间隔计算:

public ICartesianAxis[] XAxes { get; set; } = new ICartesianAxis[]
{          
    new CategoricalAxis 
    {
        // 从数据模型中提取日期作为轴标签
        Labeler = point => ((DateTimePoint)point.Model).DateTime.ToString("dd.MM.yy"),
        LabelsRotation = 80,
        // 强制保持数据原始顺序,不自动排序
        ForceStepToMin = true
    },
};

2. 配置LineSeries的映射规则

确保折线图直接使用原始数据的日期和值,无需转换为Ticks:

LineSeries<DateTimePoint> newlin = new LineSeries<DateTimePoint>();
newlin.Values = line.valsAbs.Values;
// 显式指定X/Y值的映射关系
newlin.Mapping = (point, index) => new(point.DateTime, point.Value);
Series.Add(newlin);

方案原理

分类轴不会将X轴值视为连续的数值(比如DateTime的Ticks),而是把每个数据点当作独立的分类项,直接按顺序连接相邻点,完全忽略时间维度的间隔,自然避免了缺失数据的插值问题。

无效方案说明

  • 设置Smoothness = 0仅能消除曲线平滑效果,无法解决数值轴自动补全时间间隔的插值问题
  • 手动填充缺失日期的空数据属于冗余操作,远不如分类轴方案简洁

原XAML代码(无需修改)

<lvc:CartesianChart AutoUpdateEnabled="True" Series="{Binding Series}" ZoomMode="X" XAxes="{Binding XAxes}">

内容的提问来源于stack exchange,提问作者Hatzegopteryx

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 20:20:12