首页 > 解决方案 > 每个 StackedColumn 单个 StackedColumnSeries

问题描述

我正在从 JQPlot 迁移并将 fireFox 嵌入到 Livecharts。

我的功能几乎相同,但我现在遇到了一个可能的障碍。

我的堆叠列数据集将包含第一个堆叠列的大量值(212 个条目),但随后第二个堆叠列将急剧减少。

查看代码我将不得不创建 212 个独立的 StackedColumnSeries 并为 X 轴上的每个条目指定值(31 个条目)

有没有办法可以指定单个 X 轴的值?这意味着最火的 StackedColumnSeries 将包含 212 个条目,但第二个将仅包含大约 100 个条目。这意味着我可以使用 StackedColumnSeries 上的 Tag 属性来存储对用于点击的对象的引用。

我在下面提供了示例代码,说明我在这个过程中取得了多大的进步。

在此处输入图像描述

var SeriesCollection = new SeriesCollection{
            new StackedColumnSeries
            {
                Values = new ChartValues<double> { 5, 5, 8, 0, 0, 8, 8, 5, 5, 5, 8, 0, 0, 8, 8, 5,  5, 5, 8, 0, 0, 8, 8, 5, 5, 5, 8, 0, 0, 8, 8},
                Tag = new List<string>{"KEY0001", "KEY0002", "KEY0003", "ETC" }
            },
            new StackedColumnSeries
            {
                Values = new ChartValues<double>{5, 5, 8, 0, 0, 8, 8, 5, 5, 5, 8, 0, 0, 8, 8, 5, 5, 5, 8, 0, 0, 8, 8, 5, 5, 5, 8, 0, 0, 8, 8},
                Tag = new List<string>{"KEY0011", "KEY0012", "KEY0013", "ETC" }
            },
            new StackedColumnSeries
            {
                Values = new ChartValues<double>{0, 5, 0, 0, 0, 0, 5, 0, 5, 0, 0, 0, 0, 5, 0, 5, 0, 0, 0, 0, 5, 0, 5, 0, 0, 0, 0, 0, 0, 0, 5},
                Tag = new List<string>{"KEY0021", "KEY0022", "KEY0023", "ETC" }
            },
            new StackedColumnSeries
            {
                Values = new ChartValues<double>{0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15},
                Tag = new List<string>{"KEY0031", "KEY0032", "KEY0033", "ETC" }
            },
            new StackedColumnSeries
            {
                Values = new ChartValues<double>{0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8},
                Tag = new List<string>{"KEY0041", "KEY0042", "KEY0043", "ETC" }
            },
            new StackedColumnSeries
            {
                Values = new ChartValues<double>{8},

            },
            new StackedColumnSeries
            {
                Values = new ChartValues<double>{8},

            },
            new StackedColumnSeries
            {
                Values = new ChartValues<double>{8},

            },
            new StackedColumnSeries
            {
                Values = new ChartValues<double>{8},

            },
            new StackedColumnSeries
            {
                Values = new ChartValues<double>{8},

            },
            new StackedColumnSeries
            {
                Values = new ChartValues<double>{8},

            },
            new StackedColumnSeries
            {
                Values = new ChartValues<double>{8},

            },
            new StackedColumnSeries
            {
                Values = new ChartValues<double>{8},

            },
            new StackedColumnSeries
            {
                Values = new ChartValues<double>{8},

            },
            new StackedColumnSeries
            {
                Values = new ChartValues<double>{8},

            },
            new StackedColumnSeries
            {
                Values = new ChartValues<double>{8},

            },
            new StackedColumnSeries
            {
                Values = new ChartValues<double>{8},

            },
            new StackedColumnSeries
            {
                Values = new ChartValues<double>{8},

            },
            new StackedColumnSeries
            {
                Values = new ChartValues<double>{8},

            },
            new StackedColumnSeries
            {
                Values = new ChartValues<double>{8},

            },
            new StackedColumnSeries
            {
                Values = new ChartValues<double>{8},

            },
            new StackedColumnSeries
            {
                Values = new ChartValues<double>{8},

            },
            new StackedColumnSeries
            {
                Values = new ChartValues<double>{8},

            },
            new StackedColumnSeries
            {
                Values = new ChartValues<double>{8},

            },
            new StackedColumnSeries
            {
                Values = new ChartValues<double>{8},

            },
            new StackedColumnSeries
            {
                Values = new ChartValues<double>{8},

            },new StackedColumnSeries
            {
                Values = new ChartValues<double>{8},

            },new StackedColumnSeries
            {
                Values = new ChartValues<double>{8},

            },new StackedColumnSeries
            {
                Values = new ChartValues<double>{8},

            },new StackedColumnSeries
            {
                Values = new ChartValues<double>{8},

            },new StackedColumnSeries
            {
                Values = new ChartValues<double>{8},

            }


        };


        SeriesCollection.Add(new LineSeries
        {
            Title = "Machine",
            Values = new ChartValues<decimal> { 16, 16, 16, 0, 0, 16, 8, 8, 16, 16, 16, 0, 0, 16, 8, 8, 16, 16, 16, 0, 0, 16, 8, 8, 16, 16, 16, 0, 0, 16, 8 },
            Stroke = new SolidColorBrush(System.Windows.Media.Color.FromScRgb((float)0.5, 100, 100, 100)),
            Fill = new SolidColorBrush(System.Windows.Media.Color.FromScRgb((float)0.5, 100, 100, 100))
        });

        SeriesCollection.Add(new LineSeries
        {
            Title = "Employee",
            Values = new ChartValues<decimal> { 24, 24, 16, 0, 0, 16, 16, 16, 24, 24, 16, 0, 0, 16, 16, 16, 24, 24, 16, 0, 0, 16, 16, 16, 24, 24, 16, 0, 0, 16, 16 },
        });

        cartesianChart1.Series = SeriesCollection;
        //8
        cartesianChart1.AxisX.Add(new Axis
        {
            Title = "Month",
            Labels = new[] { "03/05/2018", "04/05/2018", "05/05/2018", "06/05/2018", "07/05/2018", "08/05/2018", "09/05/2018", "10/05/2018" ,
                "11/05/2018" , "12/05/2018" , "13/05/2018" , "14/05/2018" , "15/05/2018" , "16/05/2018" , "17/05/2018" , "18/05/2018" ,
                "19/05/2018" , "20/05/2018" , "21/05/2018" , "22/05/2018" , "23/05/2018" , "24/05/2018" , "25/05/2018" , "26/05/2018" ,
                "27/05/2018" , "28/05/2018" , "29/05/2018" , "30/05/2018" , "31/05/2018" , "01/06/2018", "02/06/2018" },
            Separator = DefaultAxes.CleanSeparator,
            MinValue = 0,
            MaxValue = 14
        });
        cartesianChart1.AxisY.Add(new Axis
        {
            Title = "Hours",
            LabelFormatter = value => value.ToString("N"), //convert it to a number
            MinValue = 0,
        });

标签: c#winformslivecharts

解决方案


由于我没有足够的代表发表评论,因此我将添加此作为答案,但更多的是评论。目前,LiveCharts StackedColumn 系列无法完成您要求做的事情。所有列都将包含相同数量的系列,只是有些列不包含值。


推荐阅读