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

Highcharts.NET如何为饼图数据标签添加自定义时间属性?

当然可行!Highcharts.NET完全支持自定义属性的传递与使用,和原生Highcharts JS的逻辑一致,只是用C#的方式实现即可。下面是具体的步骤:

1. 给饼图数据添加自定义时间属性

在创建PieSeriesData实例时,利用Custom字典(SeriesDataBase基类提供的属性)存储你的自定义时间值。你需要先根据百分比计算出对应的时长并格式化(比如转换成“Xh Ym”或者“XX分钟”的形式),再存入Custom中:

// 假设你有总训练时长的变量,比如totalTrainingMinutes(单位:分钟)
double totalTrainingMinutes = 120; // 示例值,替换成你的实际总时长

zonesPercentage.ForEach(t => 
{
    // 计算当前心率区间对应的训练时长
    var trainingMinutes = totalTrainingMinutes * t.Percentage / 100;
    // 格式化成你想要的时间字符串,这里以“Xh Ym”为例
    var formattedTime = $"{Math.Floor(trainingMinutes / 60)}h {Math.Round(trainingMinutes % 60)}m";

    pieData.Add(new PieSeriesData 
    { 
        Name = t.Effort, 
        Y = (double?)t.Percentage, 
        Sliced = t.Effort.Equals("Threshold", StringComparison.InvariantCultureIgnoreCase), 
        Selected = t.Effort.Equals("Threshold", StringComparison.InvariantCultureIgnoreCase),
        // 添加自定义时间属性到Custom字典
        Custom = new Dictionary<string, object>
        {
            { "customTimeAttribute", formattedTime }
        }
    });
});

2. 配置Tooltip(或DataLabels)使用自定义属性

在Tooltip的格式字符串中,通过{point.custom.customTimeAttribute}来引用你刚才添加的自定义属性。如果是DataLabels需要显示,逻辑完全一致:

配置Tooltip:

Tooltip = new Tooltip
{
    Format = "<b>{point.name}</b>: {point.custom.customTimeAttribute}"
};

配置DataLabels(如果需要显示在饼图上):

DataLabels = new PlotOptionsPieDataLabels 
{ 
    Enabled = true, // 如果你需要显示数据标签,把这里改成true
    Format = "<b>{point.name}</b>: {point.custom.customTimeAttribute}" 
};

原理说明

Highcharts.NET的SeriesDataBase类提供的Custom字典会被序列化成原生Highcharts JS中的point.custom对象,所以你可以在任何支持Highcharts格式化字符串的地方(比如Tooltip、DataLabels),通过point.custom.你的属性名来访问自定义数据。

这种方式完全复刻了原生Highcharts JS的自定义属性逻辑,完美满足你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:41:34