c# LiveCharts WPF 如何将 0 值添加到数据不存在的日期以在 CartesianChart 中显示

没有塔塔罗夫

这个问题可能更像是一个概念问题,但我逻辑上被困在这里。我正在将 LiveChart 用于 WPF,并尝试动态构建一个简单的 CartesianChart。

我将我的数据从 CSV 加载到列表中,我正在计算每个数据对在该文件中的次数并添加数量。此 Linq 请求的结果如下所示:

[0] { Dates = "20191123", Rank = "1st", Amount = 1 }    <Anonymous Type>

我通过这个结果为我的 CartesianChart 的标签分别挑选我每个日期

现在我想将我的结果数据添加到 CartesianChart 中,因为我需要一个 SeriesCollection 我看起来像这样:

 SeriesCollection = new SeriesCollection
        {
            new LineSeries
            {
                Title = "1st",
                 Values = new ChartValues<int> {}
            },
            new LineSeries
            {
                Title = "2nd",
                 Values = new ChartValues<int> {}
            },
            new LineSeries
            {
                Title = "3rd",
                 Values = new ChartValues<int> {}
            }
}

但是当我在某些日期查看我的数据时,我没有例如第一名,所以我需要这一天的金额值为 0。我正在努力将其添加到我的数据中。

这里几乎是我正在试验的整个代码块,这也是为什么它看起来有点乱的原因。

        var data = File.ReadAllLines(FilePathes.resultPath).ToList();
        var rankHistoryList = new List<RankHistory>();
        foreach (var line in data)
        {
            rankHistoryList.Add(RankHistory.parse(line));
        };


        var result = rankHistoryList.GroupBy(x => new { x.Dates, x.Rank })
               .Select(g => new { g.Key.Dates, g.Key.Rank, Amount = g.Count() })

               .ToList();

        var dates = new List<string>();

        foreach (var entry in result)
        {
            dates.Add(entry.Dates);                     
        }
        var singleDates = dates.GroupBy(x => x).Select(grp => grp.First()).ToArray();

        foreach (var day in singleDates) { 
            foreach (var entry in result) { 
                if (entry.Rank == "1st" && day == entry.Dates)
                {
                    SeriesCollection[0].Values.Add(entry.Amount);                                                
                }
                else if (entry.Rank != "1st" && day == entry.Dates)  
                { SeriesCollection[0].Values.Add(0); }
            }
        }
没有塔塔罗夫

我认为我的答案是最复杂的,但至少它有效:

 var allRanks = new List<string>
        {
            "1st"
            ,"2nd"
            ,"3rd"

        };

        foreach (var entry in result)
        {
            dates.Add(entry.Dates);
        }
        var singleDates = dates.GroupBy(x => x).Select(grp => grp.First()).ToArray();
        Labels = singleDates;

        foreach (var ran in allRanks)
        {
            foreach (var day in singleDates)
            {
                if (ran == "1st")
                {
                    if (result.Exists(x => x.Dates == day && x.Rank == ran) == true)
                    {                 
                    SeriesCollection[0].Values.Add(result.Where(w => w.Dates == day && w.Rank == ran).Select(x => x.Amount).First());
                    }
                    else SeriesCollection[0].Values.Add(0);
                }

                if (ran == "2nd")
                {
                    if (result.Exists(x => x.Dates == day && x.Rank == ran) == true)
                    {
                        SeriesCollection[1].Values.Add(result.Where(w => w.Dates == day && w.Rank == ran).Select(x => x.Amount).First());
                    }
                    else SeriesCollection[1].Values.Add(0);
                }
                if (ran == "3rd")
                {
                    if (result.Exists(x => x.Dates == day && x.Rank == ran) == true)
                    {
                        SeriesCollection[2].Values.Add(result.Where(w => w.Dates == day && w.Rank == ran).Select(x => x.Amount).First());
                    }
                    else SeriesCollection[2].Values.Add(0);
                }

            }
        }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

LiveCharts CartesianChart 只显示每个系列的一个值

如何在WPF LiveCharts中添加图表标题

LiveCharts WPF中单独着色的数据点

WPF 如何将动态创建的复选框绑定到 LiveCharts 中动态创建的系列?

如何将空文本的提示添加到 C# WPF 中的文本框?

如何将模型中不存在的属性添加到Rails中的对象?

使用c#/ WPF / livecharts。如何在SeriesCollection中设置单个项目的可见性?

如何在 LiveCharts 中让多个 Y 轴都从 0 开始?

当源字段不存在时,将值添加到附加字段中,Access 2010

将进度条添加到 WPF 中 ListBox ItemTemplate 的 DataTemplate 但在当前上下文中不存在?

Python 将一个数据帧中多列的值添加到另一个数据帧(如果不存在)

将字典中存在的数据中不存在的类别添加到计数输出中 - python

如何将样式属性添加到元素(如果不存在)或使用Javascript将给定样式添加到预先存在的样式属性中?

如果项目不存在,WPF 将项目添加到列表框

WPF C#如何将AppStrings.resx中定义的值绑定到XAML内容

将 0 值添加到 Excel 中的缺失数据

如何将数据从datagridview传递到WPF C#中的sql表

将 SQL 数据库中的数据添加到 DataGrid C# WPF MVVM

当单元格值为 0 或公式中不存在时,如何将单元格留空

如何从ExtJS中的CartesianChart对象中按itemId获取工具

如何将嵌套对象添加到DataGrid C#WPF

将项目添加到列表中C#WPF

如果MySQL中不存在数据,如何添加总计为0的月份名称?

C#WPF Livecharts格式化程序

仅当数据不存在时如何将数据添加到firestore?

当表中不存在数据时,如何不返回值 0,SQLPLUS

如何检查JavaScript数组中是否存在某个值,继续添加0.15直到它不存在,然后将该值添加到数组的末尾?

LiveCharts WPF实时数据变慢。改善LiveCharts实时绘图性能

如何将特定的公式值显示为0