public List <int> CreatePeriodHistrogram(DadosEntrada Dados, DateTime startDate, DateTime endDate) { Calculos calc = new Calculos(); var luminance = new List <double>(); for (DateTime data = startDate; data <= endDate; data = data.AddDays(1)) { Dados.Data = data; for (int hour = Program.objParametros.StartTime; hour <= Program.objParametros.EndTime; hour++) { Dados.horas = hour; calc.Calcula(Dados, hour); luminance.Add(calc.Resultados.TotalLightCC); luminance.Add(calc.Resultados.TotalLightPE); luminance.Add(calc.Resultados.TotalLightCE); } } var qtyHour = new List <int>(); //Func<string, bool> longBooks = delegate (double light) { return book.Length > 5; }; for (double lumen = 0; lumen <= 200; lumen += 20.0) { qtyHour.Add(luminance.Count(k => k > lumen && k <= (lumen + 20.0))); } return(qtyHour); }
private PlotModel plotModelHistogram(DadosEntrada dados) { string mensagemErro = ""; try { DeedleAnalysis dataAnalysis = new DeedleAnalysis(); DateTime startDate = Program.objParametros.UltimaDataInicial; DateTime endDate = Program.objParametros.UltimaDataFinal; //int maxCount = Convert.ToInt32(endDate.Subtract(startDate).TotalDays) * (Program.objParametros.EndTime - Program.objParametros.StartTime + 1); Calculos calc = new Calculos(); var luminance = new List <double>(); List <int> dataCC = new List <int>() { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; List <int> dataPE = new List <int>() { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; List <int> dataCE = new List <int>() { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; for (DateTime data = startDate; data <= endDate; data = data.AddDays(1)) { dados.Data = data; for (int hour = Program.objParametros.StartTime; hour <= Program.objParametros.EndTime; hour++) { dados.horas = hour; calc.Calcula(dados, hour); dataCC[indValue(calc.Resultados.TotalLightCC)]++; dataPE[indValue(calc.Resultados.TotalLightPE)]++; dataCE[indValue(calc.Resultados.TotalLightCE)]++; } } int maxCount = Math.Max(Math.Max(dataCC.Max(), dataCE.Max()), dataPE.Max()); List <ColumnItem> itemsCC = dataCC.Select(x => new ColumnItem(x)).ToList(); List <ColumnItem> itemsPE = dataPE.Select(x => new ColumnItem(x)).ToList(); List <ColumnItem> itemsCE = dataCE.Select(x => new ColumnItem(x)).ToList(); var histogramPlot = new PlotModel { Title = "Hours with same light" }; //return dataAnalysis.ColumnSeries(); // Add 2 axis var categoryAxis = new CategoryAxis { Position = AxisPosition.Bottom }; categoryAxis.Labels.Add("20"); categoryAxis.Labels.Add("40"); categoryAxis.Labels.Add("60"); categoryAxis.Labels.Add("80"); categoryAxis.Labels.Add("100"); categoryAxis.Labels.Add("120"); categoryAxis.Labels.Add("140"); categoryAxis.Labels.Add("160"); categoryAxis.Labels.Add("180"); categoryAxis.Labels.Add("200"); categoryAxis.Labels.Add("220"); histogramPlot.Axes.Add(categoryAxis); histogramPlot.Axes.Add(new LinearAxis() { MajorGridlineStyle = LineStyle.Solid, MinorGridlineStyle = LineStyle.Dot, Maximum = ((maxCount / 100) + 1) * 100, Minimum = 0, TickStyle = TickStyle.Outside, Title = "Qty Hours", Position = AxisPosition.Left, }); var serieCC = new ColumnSeries() { Title = "Day Light CC", //TrackerFormatString = "Date: {2}\nOpen: {5:0.00000}\nHigh: {3:0.00000}\nLow: {4:0.00000}\nClose: {6:0.00000}", ItemsSource = itemsCC, //LabelPlacement = LabelPlacement.Inside, //LabelFormatString = "{0} times", //FillColor = OxyColor.FromRgb(44, 44, 44), }; histogramPlot.Series.Add(serieCC); var seriePE = new ColumnSeries() { Title = "Day Light PE", ItemsSource = itemsPE, LabelPlacement = LabelPlacement.Inside, }; histogramPlot.Series.Add(seriePE); var serieCE = new ColumnSeries() { Title = "Day Light CE", ItemsSource = itemsCE, LabelPlacement = LabelPlacement.Inside, }; histogramPlot.Series.Add(serieCE); return(histogramPlot); } catch (Exception ex) { MessageBox.Show(ex.Message); return(null); } }
private PlotModel plotModelDln(DadosEntrada dados) { Calculos calc = new Calculos(); // Create the data collection var dataCC = new Collection <LuminanceData>(); var dataPE = new Collection <LuminanceData>(); var dataCE = new Collection <LuminanceData>(); double maxValue = double.MinValue; for (double hora = dados.StartTime; hora <= dados.EndTime; hora += 0.2) { calc.Calcula(dados, hora); double value = calc.Resultados.TotalLightCC; maxValue = Math.Max(maxValue, value); dataCC.Add(new LuminanceData { Hour = hora, Value = value }); dataPE.Add(new LuminanceData { Hour = hora, Value = calc.Resultados.TotalLightPE }); dataCE.Add(new LuminanceData { Hour = hora, Value = calc.Resultados.TotalLightCE }); } var lineSeriesCC = new LineSeries() { DataFieldY = "Value", Title = "CC", DataFieldX = "Hour", ItemsSource = dataCC, Smooth = true, }; //string xx= lineSeriesCC.TrackerFormatString; //{ 0} //{ 1}: { 2} //{ 3}: { 4} var lineSeriesPE = new LineSeries() { Title = "PE", DataFieldY = "Value", DataFieldX = "Hour", ItemsSource = dataPE, Smooth = true, }; var lineSeriesCE = new LineSeries() { Title = "CE", DataFieldY = "Value", DataFieldX = "Hour", ItemsSource = dataCE, Smooth = true, }; var tmp = new PlotModel { Title = dados.Data.ToShortDateString() }; tmp.Axes.Add(new LinearAxis() { MajorGridlineStyle = LineStyle.Solid, MinorGridlineStyle = LineStyle.Dot, TickStyle = TickStyle.Outside, Title = "Day Light", Position = AxisPosition.Left, Maximum = 200, //maxValue + 10, Minimum = 0, }); tmp.Axes.Add(new LinearAxis() { MajorGridlineStyle = LineStyle.Solid, MinorGridlineStyle = LineStyle.Dot, TickStyle = TickStyle.Outside, Title = "Hour", Position = AxisPosition.Bottom, }); tmp.Series.Add(lineSeriesCC); tmp.Series.Add(lineSeriesPE); tmp.Series.Add(lineSeriesCE); return(tmp); }
private PlotModel plotModelCAndleDln(DadosEntrada Dados) { string mensagemErro = ""; try { var candlePlot = new PlotModel { Title = "Candle" }; DateTime DataInicial = Program.objParametros.UltimaDataInicial; DateTime DataFinal = Program.objParametros.UltimaDataFinal; // Create two axis candlePlot.Axes.Add(new DateTimeAxis { Position = AxisPosition.Bottom, Minimum = DateTimeAxis.ToDouble(DataInicial), Maximum = DateTimeAxis.ToDouble(DataFinal), StringFormat = "d/M" }); LinearAxis linearAxis1 = new LinearAxis() { Position = AxisPosition.Right, MajorGridlineStyle = LineStyle.Dot, MinorGridlineStyle = LineStyle.Dot, MajorGridlineColor = OxyColor.FromRgb(44, 44, 44), TicklineColor = OxyColor.FromRgb(82, 82, 82) }; candlePlot.Axes.Add(linearAxis1); Calculos calc = new Calculos(); // Create the data collection var luminanceData = new Collection <LuminanceData>(); for (DateTime data = DataInicial; data <= DataFinal; data = data.AddDays(1)) { Dados.Data = data; EnviaMensagem("Calculating " + data.ToString("dd - MMM")); double maxValue = double.MinValue, minValue = double.MaxValue; LuminanceData luminance = new LuminanceData(); for (int hour = Program.objParametros.StartTime; hour <= Program.objParametros.EndTime; hour++) { Dados.horas = hour; calc.Calcula(Dados, hour); maxValue = Math.Max(maxValue, calc.Resultados.TotalLightCC); minValue = Math.Min(minValue, calc.Resultados.TotalLightCE); } luminance.Data = data; luminance.Open = 1.3 * minValue; luminance.Close = 0.7 * maxValue; luminance.High = maxValue; luminance.Low = minValue; luminanceData.Add(luminance); } //string xx= lineSeriesCC.TrackerFormatString; //{ 0} //{ 1}: { 2} //{ 3}: { 4} var candleSerie = new CandleStickSeries() { Title = "Day Light", Color = OxyColors.Black, IncreasingColor = OxyColor.FromRgb(0, 197, 49), DecreasingColor = OxyColor.FromRgb(255, 95, 95), DataFieldX = "Data", DataFieldHigh = "High", DataFieldLow = "Low", DataFieldClose = "Close", DataFieldOpen = "Open", TrackerFormatString = "Date: {2}\nOpen: {5:0.00000}\nHigh: {3:0.00000}\nLow: {4:0.00000}\nClose: {6:0.00000}", ItemsSource = luminanceData }; candlePlot.Series.Add(candleSerie); return(candlePlot); } catch (Exception ex) { MessageBox.Show(ex.Message); return(null); } }