Exemplo n.º 1
0
        private void CreateTradeRetsByDayAndHourChartModel()
        {
            var distinctDays  = Data.tradeRetsByDayAndHour.Select(x => x.weekDay).Distinct();
            var distinctHours = Data.tradeRetsByDayAndHour.Select(x => x.hour).OrderByDescending(x => x).Distinct();

            var model = new PlotModel();
            var xAxis = new OxyPlot.Axes.CategoryAxis
            {
                Key         = "dayAxis",
                Position    = OxyPlot.Axes.AxisPosition.Bottom,
                ItemsSource = distinctDays.Select(x => x.ToString())
            };

            var yAxis = new OxyPlot.Axes.CategoryAxis
            {
                Key         = "hourAxis",
                Position    = OxyPlot.Axes.AxisPosition.Left,
                ItemsSource = distinctHours.Select(x => x.ToString())
            };

            model.Axes.Add(xAxis);
            model.Axes.Add(yAxis);

            model.Axes.Add(new OxyPlot.Axes.LinearColorAxis
            {
                Palette = OxyPalettes.BlueWhiteRed31
            });

            //take avg trade ret by day/hour and turn it into an array
            int dayCount  = distinctDays.Count();
            int hourCount = distinctHours.Count();
            var data      = new double[dayCount, hourCount];

            var weekDayTrans = distinctDays.Select((x, a) => new { x, a }).ToDictionary(x => x.x, x => x.a);
            var hourTrans    = distinctHours.Select((x, a) => new { x, a }).OrderByDescending(x => x.x).ToDictionary(x => x.x, x => x.a);

            foreach (var ret in Data.tradeRetsByDayAndHour)
            {
                data[weekDayTrans[ret.weekDay], hourTrans[ret.hour]] = ret.avgRet;
            }

            var heatMapSeries = new OxyPlot.Series.HeatMapSeries
            {
                X0                = 0,
                X1                = dayCount - 1,
                Y0                = 0,
                Y1                = hourCount - 1,
                XAxisKey          = "dayAxis",
                YAxisKey          = "hourAxis",
                RenderMethod      = HeatMapRenderMethod.Rectangles,
                LabelFontSize     = 0.2, // neccessary to display the label
                LabelFormatString = "p2",
                Data              = data
            };

            model.Series.Add(heatMapSeries);

            TradeRetsByDayAndHourModel = model;
        }
Exemplo n.º 2
0
        private void CreateTradeRetsByDayAndHourChartModel()
        {
            var distinctDays = Data.tradeRetsByDayAndHour.Select(x => x.weekDay).Distinct();
            var distinctHours = Data.tradeRetsByDayAndHour.Select(x => x.hour).OrderByDescending(x => x).Distinct();

            var model = new PlotModel();
            var xAxis = new OxyPlot.Axes.CategoryAxis
            {
                Key = "dayAxis",
                Position = OxyPlot.Axes.AxisPosition.Bottom,
                ItemsSource = distinctDays.Select(x => x.ToString())
            };

            var yAxis = new OxyPlot.Axes.CategoryAxis
            {
                Key = "hourAxis",
                Position = OxyPlot.Axes.AxisPosition.Left,
                ItemsSource = distinctHours.Select(x => x.ToString())
            };

            model.Axes.Add(xAxis);
            model.Axes.Add(yAxis);

            model.Axes.Add(new OxyPlot.Axes.LinearColorAxis
            {
                Palette = OxyPalettes.BlueWhiteRed31
            });

            //take avg trade ret by day/hour and turn it into an array
            int dayCount = distinctDays.Count();
            int hourCount = distinctHours.Count();
            var data = new double[dayCount, hourCount];

            var weekDayTrans = distinctDays.Select((x, a) => new { x, a }).ToDictionary(x => x.x, x => x.a);
            var hourTrans = distinctHours.Select((x, a) => new { x, a }).OrderByDescending(x => x.x).ToDictionary(x => x.x, x => x.a);
            foreach (var ret in Data.tradeRetsByDayAndHour)
            {
                data[weekDayTrans[ret.weekDay], hourTrans[ret.hour]] = ret.avgRet;
            }

            var heatMapSeries = new OxyPlot.Series.HeatMapSeries
            {
                X0 = 0,
                X1 = dayCount - 1,
                Y0 = 0,
                Y1 = hourCount - 1,
                XAxisKey = "dayAxis",
                YAxisKey = "hourAxis",
                RenderMethod = HeatMapRenderMethod.Rectangles,
                LabelFontSize = 0.2, // neccessary to display the label
                LabelFormatString = "p2",
                Data = data
            };

            model.Series.Add(heatMapSeries);

            TradeRetsByDayAndHourModel = model;
        }