private GraphData GroupDaily(GraphData data) { var newData = new GraphData { EndDate = data.EndDate, StartDate = data.StartDate, Padding = 10, XAxisLabel = data.XAxisLabel, YAxisLabel = data.YAxisLabel, Name = "Grouped daily", }; foreach (var(key, value) in data.Data) { var x = new float[value.x.Length]; var y = new float[value.x.Length]; float count = 0; for (int i = 0; i < y.Length; i++) { x[i] = i; count += value.y[i]; y[i] = count; } CubicSpline.FitParametric(x, y, value.x.Length * 5, out var xS, out var yS); newData.Data.Add(key, (xS, RemoveSmallerValues(yS))); } return(newData); }
private GraphData GenerateHourly() { var data = new GraphData(); data.StartDate = null; data.Name = "Activity"; var hours = new float[24]; for (int i = 0; i < 24; i++) { hours[i] = i; } foreach (var item in Messages) { var hourlyCount = new float[24]; var hourly = item.Value.GroupBy(x => x.Time.Hour).OrderBy(x => x.Key).ToList(); //var max = hourly.Max(x => x.Count()); foreach (var x in hourly) { //hourlyCount[x.Key] = x.Count() * 100.0f / max; hourlyCount[x.Key] = x.Count(); } CubicSpline.FitParametric(hours, hourlyCount, 24 * 10, out var xs, out var yS); data.Data.Add(item.Key, (xs, RemoveNegativeValues(yS))); } return(data); }
private static GraphData GenerateOverallHourly(ref List <Message> data) { //var daily = orderedData.GroupBy(x => x.Time.Date).ToList(); var hourly = data.GroupBy(x => x.Time.Hour).OrderBy(x => x.Key).ToList(); var hours = new float[24]; var hourlyCount = new float[24]; for (int i = 0; i < 24; i++) { hourlyCount[i] = (hourly[i].Count()); hours[i] = i; } var dataHourly = new GraphData(); CubicSpline.FitParametric(hours, hourlyCount, 24 * 10, out var xS, out var yS); dataHourly.Data.Add("Hourly", (xS, yS)); dataHourly.Padding = 10; dataHourly.Name = "Hourly data"; dataHourly.YAxisLabel = "Value"; dataHourly.XAxisLabel = "Hours"; return(dataHourly); }