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

Livecharts StackedColumnSeries数值显示异常:-100000000000000 μ替代-100 M

解决LiveCharts2堆叠柱形图标签数值格式化错误的问题

在SKCartesianChart的StackedColumnSeries中展示-1e8m这类数值时,标签会错误显示为-100000000000000 μ,而非预期的-100 M,这是LiveCharts2预发布版本的已知Bug,可通过自定义标签格式化器临时绕过。

解决方法

为每个StackedColumnSeries指定自定义的LabelFormatter,手动处理数值的单位转换与格式化逻辑:

示例代码

// 自定义数值格式化方法
private static string CustomLabelFormatter(decimal value)
{
    if (value == 0) return "0";

    // 定义量级对应的单位符号
    var unitMap = new (decimal Magnitude, string Symbol)[]
    {
        (1e12m, "T"),
        (1e9m, "B"),
        (1e6m, "M"),
        (1e3m, "K"),
        (1m, "")
    };

    foreach (var (magnitude, symbol) in unitMap)
    {
        if (Math.Abs(value) >= magnitude)
        {
            var formattedNum = value / magnitude;
            // 保留整数格式,可按需调整小数位数
            return $"{formattedNum:N0} {symbol}";
        }
    }

    return value.ToString();
}

// 初始化图表时应用自定义格式化器
var chart = new SKCartesianChart
{
    Series = new List<ISeries>
    {
        new StackedColumnSeries<decimal> 
        { 
            Values = new [] {1e8m},
            LabelFormatter = point => CustomLabelFormatter(point.Coordinate.PrimaryValue)
        },
        new StackedColumnSeries<decimal> 
        { 
            Values = new [] {-1e8m},
            LabelFormatter = point => CustomLabelFormatter(point.Coordinate.PrimaryValue)
        }
    }
};

补充说明

  • 可根据需求调整格式化逻辑中的单位范围、小数位数,适配不同业务场景
  • 也可基于LiveCharts内置格式化逻辑做局部修正,减少重复代码编写

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 20:30:38