Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
            }
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
            }
        }