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

Syncfusion StackedColumnSeries分组后多系列失效问题求解决方案

解决Syncfusion StackedColumnSeries分组后多系列失效问题

方案1:用官方StackedColumnGroup组件实现分组堆叠

Syncfusion的StackedColumnSeries本身不支持通过GroupName实现分组+多系列堆叠,官方推荐用StackedColumnGroup组件完成这个需求——它专门用来将多个堆叠系列归为一组,不同组之间自动并列展示:

  • 在图表容器内嵌套StackedColumnGroup,每个分组对应一个GroupName
  • 把同组的StackedColumnSeries放到对应的StackedColumnGroup内部
  • 同组内的系列自动堆叠,不同组的系列会在同一分类下并列显示

示例代码(以.NET MAUI为例):

<chart:SfChart>
    <!-- 第一分组:GroupA -->
    <chart:StackedColumnGroup GroupName="GroupA">
        <chart:StackedColumnSeries ItemsSource="{Binding GroupASalesData1}" 
                                   XBindingPath="Month" YBindingPath="Amount" />
        <chart:StackedColumnSeries ItemsSource="{Binding GroupASalesData2}" 
                                   XBindingPath="Month" YBindingPath="Amount" />
    </chart:StackedColumnGroup>

    <!-- 第二分组:GroupB -->
    <chart:StackedColumnGroup GroupName="GroupB">
        <chart:StackedColumnSeries ItemsSource="{Binding GroupBSalesData1}" 
                                   XBindingPath="Month" YBindingPath="Amount" />
        <chart:StackedColumnSeries ItemsSource="{Binding GroupBSalesData2}" 
                                   XBindingPath="Month" YBindingPath="Amount" />
    </chart:StackedColumnGroup>

    <chart:CategoryAxis />
    <chart:NumericalAxis />
</chart:SfChart>

方案2:手动重构数据结构实现分组堆叠

如果不想额外引入StackedColumnGroup,可以直接调整数据结构,用StackingGroup属性区分分组:

  • 给数据模型添加Group字段,标记每条数据所属的分组
  • 为每个分组的系列设置相同的StackingGroup值,不同分组用不同值
  • 可选通过过滤筛选对应分组的数据

示例数据模型(C#):

public class SalesData
{
    public string Month { get; set; }
    public double Amount { get; set; }
    public string Group { get; set; }
}

// 初始化示例数据
public List<SalesData> AllSalesData { get; set; } = new()
{
    new SalesData { Month = "Jan", Amount = 2000, Group = "GroupA" },
    new SalesData { Month = "Jan", Amount = 1500, Group = "GroupA" },
    new SalesData { Month = "Jan", Amount = 1800, Group = "GroupB" },
    new SalesData { Month = "Jan", Amount = 1200, Group = "GroupB" },
    // 其他月份数据...
};

对应的图表配置:

<chart:SfChart>
    <!-- GroupA的两个堆叠系列 -->
    <chart:StackedColumnSeries ItemsSource="{Binding AllSalesData}" 
                               XBindingPath="Month" YBindingPath="Amount"
                               Filter="data => data.Group == 'GroupA'"
                               StackingGroup="GroupA" />
    <chart:StackedColumnSeries ItemsSource="{Binding AllSalesData}" 
                               XBindingPath="Month" YBindingPath="Amount"
                               Filter="data => data.Group == 'GroupA'"
                               StackingGroup="GroupA" />

    <!-- GroupB的两个堆叠系列 -->
    <chart:StackedColumnSeries ItemsSource="{Binding AllSalesData}" 
                               XBindingPath="Month" YBindingPath="Amount"
                               Filter="data => data.Group == 'GroupB'"
                               StackingGroup="GroupB" />
    <chart:StackedColumnSeries ItemsSource="{Binding AllSalesData}" 
                               XBindingPath="Month" YBindingPath="Amount"
                               Filter="data => data.Group == 'GroupB'"
                               StackingGroup="GroupB" />

    <chart:CategoryAxis />
    <chart:NumericalAxis />
</chart:SfChart>

关键提醒

StackedColumnSeries的GroupName属性是给非堆叠的普通柱形系列用的,堆叠系列不支持这个属性,这就是之前配置失效的核心原因,必须用上面两种方案替代。

内容的提问来源于stack exchange,提问作者Sachin Aphro ECS

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 20:45:28