Esempio n. 1
0
        public StackedAreaSeries SetProperties(StackedAreaSeries NewSeries, DataPt Pt)
        {
            NewSeries.PointForeground   = Pt.Marker.Graphics.GetBackgroundBrush();
            NewSeries.PointGeometrySize = Pt.Marker.Radius;

            return(NewSeries);
        }
        /// <summary>
        /// Gets a new stacked area series for a given point size, color and title.
        /// </summary>
        /// <param name="title">The line series title.</param>
        /// <param name="color">The color for the series.</param>
        /// <param name="pointSize">The size of the points in pixels.</param>
        /// <returns>The newly created line series.</returns>
        private StackedAreaSeries GetBasicStackedAreaSeries(string title, Color color, double pointSize)
        {
            // Set up the gradient brush.
            LinearGradientBrush gradientBrush = new LinearGradientBrush
            {
                StartPoint = new System.Windows.Point(0, 0),
                EndPoint   = new System.Windows.Point(0, 1)
            };

            gradientBrush.GradientStops.Add(pointSize > 0.1 ? new GradientStop(color, 0) : new GradientStop(Colors.Transparent, 1));
            gradientBrush.GradientStops.Add(new GradientStop(Colors.Transparent, 1));

            StackedAreaSeries lineSeries = new StackedAreaSeries
            {
                Title             = title,
                DataLabels        = false,
                LabelPoint        = PointLabel,
                LineSmoothness    = 0.2,
                PointGeometrySize = pointSize,
                Foreground        = new SolidColorBrush(color),
                PointForeground   = new SolidColorBrush(color),
                Stroke            = new SolidColorBrush(color),
                Fill = gradientBrush
            };

            return(lineSeries);
        }
Esempio n. 3
0
        /// <summary>
        /// Create chart series for each coin
        /// </summary>
        private void PlotPaymentChart()
        {
            try
            {
                // Exit if no fiat currency is selected
                if (Application.Current.Properties["Currency"] == null)
                {
                    return;
                }

                // New list of strings used for labels when plotting the chart
                List <string> labels = new List <string>();

                // New collection of series
                seriesCollection = new SeriesCollection();

                foreach (MinerPaymentSummary MinerPaymentSummary in MinerPaymentsData.MinerPaymentSummaryList)
                {
                    StackedAreaSeries           stackedColumnSeries = new StackedAreaSeries();
                    ChartValues <DateTimePoint> chartValues         = new ChartValues <DateTimePoint>();

                    // Format series fill, stroke, etc
                    FormatChartSeries(MinerPaymentSummary, stackedColumnSeries);

                    // Iterate through each day and add a chart point
                    foreach (MinerPaymentsGroupedByDay minerPaymentsGroupedByDay in MinerPaymentSummary.MinerPaymentsGroupedByDayList.Where(x => x.PaymentDate >= DateTime.Now.AddDays(-30)).OrderByDescending(y => y.PaymentDate))
                    {
                        DateTimePoint dateTimePoint = CreateChartDataPoint(minerPaymentsGroupedByDay);
                        chartValues.Add(dateTimePoint);
                    }

                    // Add coin symbol to labels to show up in the UI
                    labels.Add(MinerPaymentSummary.CoinType.ToString());

                    // Add 0 values for any dates with no payments in order to render the chart properly
                    PaymentChartDataBackFill paymentChartDataBackFill = new PaymentChartDataBackFill();
                    stackedColumnSeries.Values = paymentChartDataBackFill.BackFillList(chartValues);
                    seriesCollection.Add(stackedColumnSeries);
                }

                // Add a line series for the Total Line
                seriesCollection.Add(this.AddTotalLineSeries());

                // Axis label formats
                XFormatter = val => new DateTime((long)val).ToShortDateString();
                YFormatter = val => String.Format("{0} {1}", Math.Round(val, 4).ToString(), Application.Current.Properties["Currency"].ToString());

                // Rebind UI
                OnPropertyChanged("SeriesCollection");
                OnPropertyChanged("XFormatter");
                OnPropertyChanged("YFormatter");
            }
            catch (Exception e)
            {
                ShowError(String.Format("{0} {1}", "Error plotting payment chart", e.Message));
            }
        }
Esempio n. 4
0
        public SeriesCollection ToStackedAreaSeriesCollection()
        {
            SeriesCollection seriesCollection = new SeriesCollection();

            for (int r = 0; r < SeriesD.Count; r++)
            {
                StackedAreaSeries series = new StackedAreaSeries();
                ConfigureSeries(series, r);

                seriesCollection.Add(series);
            }

            return(seriesCollection);
        }
Esempio n. 5
0
        private void createStackedAreaChart()
        {
            AreaCollection = new SeriesCollection();
            using (var db = new LiteDatabase(@"AdatBazis.db"))
            {
                var col = db.GetCollection <CustomPropAggregator>("customList");

                var results = col.Find(Query.All("TimeStamp"));
                results = results.OrderBy(x => x.TimeStamp).ToList();
                var titles = new List <string>();

                foreach (var result in results)
                {
                    titles.Add(result.Title);
                }
                titles.Sort();

                foreach (var title in titles.Distinct())
                {
                    var cv = new ChartValues <DateTimePoint>();
                    foreach (var result in results)
                    {
                        if (result.Title == title)
                        {
                            cv.Add(new DateTimePoint(new DateTime(result.TimeStamp.Year, result.TimeStamp.Month, 1), (double)result.Spending));
                        }
                    }

                    var sas = new StackedAreaSeries
                    {
                        Title          = title,
                        Values         = cv,
                        LineSmoothness = 0.2
                    };
                    AreaCollection.Add(sas);

                    System.Windows.Controls.Panel.SetZIndex(sas, 0);
                }
            };
            if (!yearlyMode)
            {
                XFormatter = val => new DateTime((long)val).ToString("MMMM");
            }
            else
            {
                XFormatter = val => new DateTime((long)val).ToString("YYYY");
            }
            DataContext = this;
        }
Esempio n. 6
0
        private void StatsOnPropertyChanged(object sender, PropertyChangedEventArgs propertyChangedEventArgs)
        {
            this.Dispatcher.Invoke(() =>
            {
                if (propertyChangedEventArgs.PropertyName == nameof(this._stats.ConnectionStats))
                {
                    this._ticks++;
                    foreach (var connection in this._stats.ConnectionStats.Connections)
                    {
                        if (!this._guidToSeries.ContainsKey(connection.AdapterId))
                        {
                            var newAdapter = this._stats.Adapters.FirstOrDefault(a => a.AdapterId == connection.AdapterId);

                            //If we don't yet have any information on the new adapter, we just skip the value.
                            if (newAdapter == null)
                            {
                                continue;
                            }

                            var serie = new StackedAreaSeries()
                            {
                                Title  = newAdapter.Name,
                                Values = new ChartValues <MeasureModel>(),
                                //LineSmoothness = 0
                            };

                            this.SeriesCollection.Add(serie);

                            this._guidToSeries.Add(newAdapter.AdapterId, serie);
                        }

                        var chartValues = this._guidToSeries[connection.AdapterId].Values;

                        chartValues.Add(new MeasureModel(this._ticks, connection.TotalBps));

                        if (chartValues.Count > 50)
                        {
                            chartValues.RemoveAt(0);
                        }
                    }

                    this.SetAxisLimit(this._ticks);
                }
            });
        }
        /// <summary>
        /// Creates a new stacked area series point with a given name and value.
        /// </summary>
        /// <param name="title">The line series title.</param>
        /// <param name="xValues">The x date values for the series.</param>
        /// <param name="yValues">The y values for the series.</param>
        /// <param name="color">The color for the series.</param>
        /// <param name="pointSize">The size of the points in pixels.</param>
        /// <returns>The newly created line series.</returns>
        public StackedAreaSeries CreateStackedAreaSeries(string title, List <DateTime> xValues, List <double> yValues, Color color, double pointSize = 15d)
        {
            // Update the maxima and minima.
            UpdateMaxMinValues(xValues, yValues);

            // Get the date time point values.
            ChartValues <DateTimePoint> values = new ChartValues <DateTimePoint>();

            for (int i = 0; i < xValues.Count && i < yValues.Count; i++)
            {
                values.Add(new DateTimePoint(xValues[i], yValues[i]));
            }

            // Finally create the line series and set the values.
            StackedAreaSeries lineSeries = GetBasicStackedAreaSeries(title, color, pointSize);

            lineSeries.Values = values;

            return(lineSeries);
        }
Esempio n. 8
0
 void Loadchart()
 {
     SeriesCollectionline = new SeriesCollection();
     SeriesCollectionpie  = new SeriesCollection();
     casenum = new int[4] {
         0, 0, 0, 0
     };
     for (int i = 1; i < 5; i++)
     {
         StackedAreaSeries stackedareaSeries = new StackedAreaSeries
         {
             Title          = "第" + i + "类",
             LineSmoothness = i
         };
         var      Values    = new ChartValues <DateTimePoint>();
         var      days      = (EndDateTime - StartDateTime).Days;
         DateTime queryDate = StartDateTime.AddDays(-1);
         for (int j = 0; j < days; j++)
         {
             queryDate = queryDate.AddDays(1);
             int num = GetCaseCount(queryDate.Date, queryDate.Date, i);
             casenum[i - 1] += num;
             Values.Add(new DateTimePoint(queryDate.Date, Convert.ToDouble(num)));
         }
         stackedareaSeries.Values = Values;
         SeriesCollectionline.Add(stackedareaSeries);
         PieSeries ps = new PieSeries();
         ps.Title  = "第" + i + "类";
         ps.Values = new ChartValues <int>(new int[1] {
             casenum[i - 1]
         });
         ps.DataLabels = true;
         ps.LabelPoint = PointLabel;
         SeriesCollectionpie.Add(ps);
     }
     linechart.Series = SeriesCollectionline;
     piechart.Series  = SeriesCollectionpie;
 }
Esempio n. 9
0
        protected override ISeries ConvertInternal(IDataObject data, ResourceDictionary availableResources,
                                                   Color resolvedColor, ObservableCollection <IDataObject> seriesCollection, Control tooltip)
        {
            // Chart control uses SeriesDataConstants.Visibility property from Tag
            var series = new StackedAreaSeries {
                Tag = data
            };

            var orderedSeriescollection = seriesCollection.OrderBy(s => s[ChartingConstants.SeriesOrderPropertyName] ?? 0);

            foreach (var stackableSeries in orderedSeriescollection)
            {
                var idoCollection = stackableSeries[SeriesDataConstants.Data] as ICollection <IDataObject>;
                var dataPoints    = new IDataObject[idoCollection.Count];
                idoCollection.CopyTo(dataPoints, 0);
                var observableDataPoints = new BatchObservableCollection <IDataObject>(dataPoints);

                SeriesDefinitionConverter.Convert(stackableSeries, observableDataPoints, availableResources,
                                                  (s) => { series.SeriesDefinitions.Add((SeriesDefinition)s); });
            }

            return(series);
        }
Esempio n. 10
0
        public static Tuple <Axis, Axis, List <Series> > ConfigureChartByChartType(
            string SeriesChartType,
            List <string> lstBoxSelectedStringValues)
        {
            DefaultTooltip defaultTooltip = new DefaultTooltip();

            defaultTooltip.SelectionMode = TooltipSelectionMode.OnlySender;

            Axis AbscissaAxis = new Axis()
            {
                Separator = new Separator()
                {
                    Step = 1, IsEnabled = false
                },
                Title          = "Date",
                Labels         = lstBoxSelectedStringValues,
                LabelsRotation = 20,
                FontSize       = 16
            };

            Axis OrdinateAxis = new Axis()
            {
                Title          = "Time Duration (hrs)",
                FontSize       = 16,
                LabelFormatter = v => v.ToString("N0")
            };

            switch (SeriesChartType)
            {
            case "Column":
                ColumnSeries columnSeries = new ColumnSeries()
                {
                    Title      = "GeneratorOn (hrs)",
                    DataLabels = true,
                    Values     = new ChartValues <double>()
                };
                List <Series> columnSeriesList = new List <Series>();
                columnSeriesList.Add(columnSeries);

                return(new Tuple <Axis, Axis, List <Series> >(
                           OrdinateAxis,
                           AbscissaAxis,
                           columnSeriesList));

            case "Stacked Column":
                StackedColumnSeries stackedColumnSeries = new StackedColumnSeries()
                {
                    DataLabels = true,
                    Values     = new ChartValues <double>()
                };
                List <Series> stackedColumnSeriesList = new List <Series>();
                stackedColumnSeriesList.Add(stackedColumnSeries);

                return(new Tuple <Axis, Axis, List <Series> >(
                           OrdinateAxis,
                           AbscissaAxis,
                           stackedColumnSeriesList));

            case "Stacked Area":
                StackedAreaSeries stackedAreaSeries = new StackedAreaSeries()
                {
                    DataLabels = true,
                    Values     = new ChartValues <DateTimePoint>()
                };
                List <Series> stackedAreaSeriesList = new List <Series>();
                stackedAreaSeriesList.Add(stackedAreaSeries);

                return(new Tuple <Axis, Axis, List <Series> >(
                           OrdinateAxis,
                           AbscissaAxis,
                           stackedAreaSeriesList));

            case "Line":
                LineSeries lineSeries = new LineSeries()
                {
                    Title      = "GeneratorOn (hrs)",
                    DataLabels = true,
                    Values     = new ChartValues <double>()
                };
                List <Series> lineSeriesList = new List <Series>();
                lineSeriesList.Add(lineSeries);

                return(new Tuple <Axis, Axis, List <Series> >(
                           OrdinateAxis,
                           AbscissaAxis,
                           lineSeriesList));

            case "Pie":
                PieSeries pieSeries = new PieSeries()
                {
                    Title      = "GeneratorOn (hrs)",
                    DataLabels = true,
                    Values     = new ChartValues <double>()
                };
                List <Series> pieSeriesList = new List <Series>();
                pieSeriesList.Add(pieSeries);

                return(new Tuple <Axis, Axis, List <Series> >(
                           OrdinateAxis,
                           AbscissaAxis,
                           pieSeriesList));

            default:
                break;
            }
            return(null);
        }
Esempio n. 11
0
        public void AddLevel3Control(Point p)
        {
            switch (ControlTag)
            {
            case 31:
            {
                PieChart pieChart = new PieChart();
                pieChart.Width  = 400;
                pieChart.Height = 300;

                pieChart.LegendLocation = LegendLocation.Bottom;

                PieSeries pieSeries = new PieSeries();
                pieSeries.Values = new ChartValues <int> {
                    5
                };
                pieSeries.Title      = "A";
                pieSeries.DataLabels = true;

                PieSeries pieSeries2 = new PieSeries();
                pieSeries2.Values = new ChartValues <int> {
                    3
                };
                pieSeries2.Title      = "B";
                pieSeries2.DataLabels = true;

                PieSeries pieSeries3 = new PieSeries();
                pieSeries3.Values = new ChartValues <int> {
                    6
                };
                pieSeries3.Title      = "C";
                pieSeries3.DataLabels = true;

                pieChart.Series.Add(pieSeries);
                pieChart.Series.Add(pieSeries2);
                pieChart.Series.Add(pieSeries3);
                pieChart.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity));

                Panel.SetZIndex(pieChart, 0);
                Canvas.SetLeft(pieChart, p.X - pieChart.DesiredSize.Width / 2);
                Canvas.SetTop(pieChart, p.Y - pieChart.DesiredSize.Height / 2);

                AddEvents(pieChart);
                DesignCanvas.Children.Add(pieChart);
            }

            break;

            case 32:
            {
                CartesianChart cartesianChart = new CartesianChart();
                cartesianChart.Width  = 400;
                cartesianChart.Height = 300;

                cartesianChart.LegendLocation = LegendLocation.Bottom;

                ColumnSeries columnSeries = new ColumnSeries();
                columnSeries.Values = new ChartValues <int> {
                    5
                };
                columnSeries.Title      = "A";
                columnSeries.DataLabels = true;

                ColumnSeries columnSeries2 = new ColumnSeries();
                columnSeries2.Values = new ChartValues <int> {
                    3
                };
                columnSeries2.Title      = "B";
                columnSeries2.DataLabels = true;

                ColumnSeries columnSeries3 = new ColumnSeries();
                columnSeries3.Values = new ChartValues <int> {
                    6
                };
                columnSeries3.Title      = "C";
                columnSeries3.DataLabels = true;

                cartesianChart.Series.Add(columnSeries);
                cartesianChart.Series.Add(columnSeries2);
                cartesianChart.Series.Add(columnSeries3);

                cartesianChart.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity));

                Panel.SetZIndex(cartesianChart, 0);
                Canvas.SetLeft(cartesianChart, p.X - cartesianChart.DesiredSize.Width / 2);
                Canvas.SetTop(cartesianChart, p.Y - cartesianChart.DesiredSize.Height / 2);

                AddEvents(cartesianChart);
                DesignCanvas.Children.Add(cartesianChart);
            }
            break;

            case 33:
            {
                CartesianChart cartesianChart = new CartesianChart();
                cartesianChart.Width  = 400;
                cartesianChart.Height = 300;

                cartesianChart.LegendLocation = LegendLocation.Bottom;

                StackedColumnSeries columnSeries = new StackedColumnSeries();
                columnSeries.Values = new ChartValues <int> {
                    5, 6, 5
                };
                columnSeries.Title      = "A";
                columnSeries.DataLabels = true;

                StackedColumnSeries columnSeries2 = new StackedColumnSeries();
                columnSeries2.Values = new ChartValues <int> {
                    3, 4, 2
                };
                columnSeries2.Title      = "B";
                columnSeries2.DataLabels = true;

                StackedColumnSeries columnSeries3 = new StackedColumnSeries();
                columnSeries3.Values = new ChartValues <int> {
                    6, 3, 3
                };
                columnSeries3.Title      = "C";
                columnSeries3.DataLabels = true;

                cartesianChart.Series.Add(columnSeries);
                cartesianChart.Series.Add(columnSeries2);
                cartesianChart.Series.Add(columnSeries3);

                cartesianChart.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity));

                Panel.SetZIndex(cartesianChart, 0);
                Canvas.SetLeft(cartesianChart, p.X - cartesianChart.DesiredSize.Width / 2);
                Canvas.SetTop(cartesianChart, p.Y - cartesianChart.DesiredSize.Height / 2);

                AddEvents(cartesianChart);
                DesignCanvas.Children.Add(cartesianChart);
            }
            break;

            case 34:
            {
                CartesianChart cartesianChart = new CartesianChart();
                cartesianChart.Width  = 400;
                cartesianChart.Height = 300;

                cartesianChart.LegendLocation = LegendLocation.Bottom;

                RowSeries CarSeries = new RowSeries();
                CarSeries.Values = new ChartValues <int> {
                    5
                };
                CarSeries.Title      = "A";
                CarSeries.DataLabels = true;

                RowSeries CarSeries2 = new RowSeries();
                CarSeries2.Values = new ChartValues <int> {
                    3
                };
                CarSeries2.Title      = "B";
                CarSeries2.DataLabels = true;

                RowSeries CarSeries3 = new RowSeries();
                CarSeries3.Values = new ChartValues <int> {
                    6
                };
                CarSeries3.Title      = "C";
                CarSeries3.DataLabels = true;

                cartesianChart.Series.Add(CarSeries);
                cartesianChart.Series.Add(CarSeries2);
                cartesianChart.Series.Add(CarSeries3);

                cartesianChart.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity));

                Panel.SetZIndex(cartesianChart, 0);
                Canvas.SetLeft(cartesianChart, p.X - cartesianChart.DesiredSize.Width / 2);
                Canvas.SetTop(cartesianChart, p.Y - cartesianChart.DesiredSize.Height / 2);

                AddEvents(cartesianChart);
                DesignCanvas.Children.Add(cartesianChart);
            }
            break;

            case 35:
            {
                CartesianChart cartesianChart = new CartesianChart();
                cartesianChart.Width  = 400;
                cartesianChart.Height = 300;

                cartesianChart.LegendLocation = LegendLocation.Bottom;

                StackedRowSeries columnSeries = new StackedRowSeries();
                columnSeries.Values = new ChartValues <int> {
                    5, 6, 5
                };
                columnSeries.Title      = "A";
                columnSeries.DataLabels = true;

                StackedRowSeries columnSeries2 = new StackedRowSeries();
                columnSeries2.Values = new ChartValues <int> {
                    3, 4, 2
                };
                columnSeries2.Title      = "B";
                columnSeries2.DataLabels = true;

                StackedRowSeries columnSeries3 = new StackedRowSeries();
                columnSeries3.Values = new ChartValues <int> {
                    6, 3, 3
                };
                columnSeries3.Title      = "C";
                columnSeries3.DataLabels = true;

                cartesianChart.Series.Add(columnSeries);
                cartesianChart.Series.Add(columnSeries2);
                cartesianChart.Series.Add(columnSeries3);

                cartesianChart.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity));

                Panel.SetZIndex(cartesianChart, 0);
                Canvas.SetLeft(cartesianChart, p.X - cartesianChart.DesiredSize.Width / 2);
                Canvas.SetTop(cartesianChart, p.Y - cartesianChart.DesiredSize.Height / 2);

                AddEvents(cartesianChart);
                DesignCanvas.Children.Add(cartesianChart);
            }
            break;

            case 36:
            {
                CartesianChart lineChart = new CartesianChart();
                lineChart.Width  = 400;
                lineChart.Height = 300;

                lineChart.LegendLocation = LegendLocation.Bottom;

                LineSeries lineSeries = new LineSeries();
                lineSeries.Values = new ChartValues <int> {
                    5, 6, 8
                };
                lineSeries.Title      = "A";
                lineSeries.DataLabels = true;

                LineSeries lineSeries2 = new LineSeries();
                lineSeries2.Values = new ChartValues <int> {
                    3, 2, 5
                };
                lineSeries2.Title      = "B";
                lineSeries2.DataLabels = true;

                LineSeries lineSeries3 = new LineSeries();
                lineSeries3.Values = new ChartValues <int> {
                    6, 5, 3
                };
                lineSeries3.Title      = "C";
                lineSeries3.DataLabels = true;

                lineChart.Series.Add(lineSeries);
                lineChart.Series.Add(lineSeries2);
                lineChart.Series.Add(lineSeries3);

                lineChart.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity));

                Panel.SetZIndex(lineChart, 0);
                Canvas.SetLeft(lineChart, p.X - lineChart.DesiredSize.Width / 2);
                Canvas.SetTop(lineChart, p.Y - lineChart.DesiredSize.Height / 2);

                AddEvents(lineChart);
                DesignCanvas.Children.Add(lineChart);
            }
            break;

            case 37:
            {
                CartesianChart cartesianChart = new CartesianChart();
                cartesianChart.Width  = 400;
                cartesianChart.Height = 300;

                cartesianChart.LegendLocation = LegendLocation.Bottom;

                StackedAreaSeries columnSeries = new StackedAreaSeries();
                columnSeries.Values = new ChartValues <int> {
                    2, 4, 6
                };
                columnSeries.Title      = "A";
                columnSeries.DataLabels = true;

                StackedAreaSeries columnSeries2 = new StackedAreaSeries();
                columnSeries2.Values = new ChartValues <int> {
                    3, 5, 7
                };
                columnSeries2.Title      = "B";
                columnSeries2.DataLabels = true;

                StackedAreaSeries columnSeries3 = new StackedAreaSeries();
                columnSeries3.Values = new ChartValues <int> {
                    4, 6, 8
                };
                columnSeries3.Title      = "C";
                columnSeries3.DataLabels = true;

                cartesianChart.Series.Add(columnSeries);
                cartesianChart.Series.Add(columnSeries2);
                cartesianChart.Series.Add(columnSeries3);

                cartesianChart.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity));

                Panel.SetZIndex(cartesianChart, 0);
                Canvas.SetLeft(cartesianChart, p.X - cartesianChart.DesiredSize.Width / 2);
                Canvas.SetTop(cartesianChart, p.Y - cartesianChart.DesiredSize.Height / 2);

                AddEvents(cartesianChart);
                DesignCanvas.Children.Add(cartesianChart);
            }
            break;

            case 38:
            {
                CartesianChart cartesianChart = new CartesianChart();
                cartesianChart.Width  = 400;
                cartesianChart.Height = 300;

                cartesianChart.LegendLocation = LegendLocation.Bottom;

                StepLineSeries columnSeries = new StepLineSeries();
                columnSeries.Values = new ChartValues <int> {
                    1, 2, 1
                };
                columnSeries.Title      = "A";
                columnSeries.DataLabels = true;

                StepLineSeries columnSeries2 = new StepLineSeries();
                columnSeries2.Values = new ChartValues <int> {
                    3, 5, 6
                };
                columnSeries2.Title      = "B";
                columnSeries2.DataLabels = true;

                StepLineSeries columnSeries3 = new StepLineSeries();
                columnSeries3.Values = new ChartValues <int> {
                    6, 7, 7
                };
                columnSeries3.Title      = "C";
                columnSeries3.DataLabels = true;

                cartesianChart.Series.Add(columnSeries);
                cartesianChart.Series.Add(columnSeries2);
                cartesianChart.Series.Add(columnSeries3);

                cartesianChart.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity));

                Panel.SetZIndex(cartesianChart, 0);
                Canvas.SetLeft(cartesianChart, p.X - cartesianChart.DesiredSize.Width / 2);
                Canvas.SetTop(cartesianChart, p.Y - cartesianChart.DesiredSize.Height / 2);

                AddEvents(cartesianChart);
                DesignCanvas.Children.Add(cartesianChart);
            }
            break;
            }
        }
Esempio n. 12
0
        private void dataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            try
            {
                dynamic selectedItem = dataGrid.SelectedItems[0];

                waterfallFlow.Children.Clear();
                Series series = new ColumnSeries();

                switch (FindElement.Settings.ChartType ?? 0)
                {
                case 0:
                    series = new ColumnSeries {
                    };
                    break;

                case 1:
                    series = new StackedColumnSeries {
                    };
                    break;

                case 2:
                    series = new LineSeries {
                    };
                    break;

                case 3:
                    series = new StepLineSeries {
                    };
                    break;

                case 4:
                    series = new StackedAreaSeries {
                    };
                    break;
                }

                getStudentScore(selectedItem.Id); // get Student scores

                //get scores merge duplicates and replace string to int
                var score = _initialCollection.GroupBy(x => new { x.Book, x.Date, x.StudentId })
                            .Select(x => new
                {
                    x.Key.StudentId,
                    x.Key.Book,
                    x.Key.Date,
                    Sum = x.Sum(y => AppVariable.EnumToNumber(y.Scores))
                }).ToArray();

                //get Book Count for generate chart
                var bookCount = score.GroupBy(x => new { x.Book })
                                .Select(g => new
                {
                    g.Key.Book
                }).ToList();

                MaterialChart _addUser;
                Control       _currentUser;

                //generate chart based on count of books
                foreach (var item in bookCount)
                {
                    _addUser     = new MaterialChart(item.Book, selectedItem.Name + " " + selectedItem.LName, getDateArray(item.Book), getScoreArray(item.Book), getAverage(item.Book), getAverageStatus(item.Book), series, AppVariable.GetBrush(FindElement.Settings.ChartColor ?? AppVariable.CHART_GREEN));
                    _currentUser = _addUser;
                    waterfallFlow.Children.Add(_currentUser);
                }

                waterfallFlow.Refresh();
            }
            catch (ArgumentNullException) { }
            catch (NullReferenceException)
            {
            }
        }
Esempio n. 13
0
        /// <summary>
        /// Format the series based on the particular coin
        /// </summary>
        /// <param name="MinerPaymentSummary"></param>
        /// <param name="stackedColumnSeries"></param>
        private static void FormatChartSeries(MinerPaymentSummary MinerPaymentSummary, StackedAreaSeries stackedColumnSeries)
        {
            // Series color
            var converter = new System.Windows.Media.BrushConverter();

            CoinPaymentChartColor.CoinPaymentChartColorDictionary.TryGetValue(MinerPaymentSummary.CoinType, out string chartColor);

            Brush brushFill = (Brush)converter.ConvertFromString(chartColor);

            brushFill.Opacity = 0.05;

            Brush brushStroke = (Brush)converter.ConvertFromString(chartColor);

            brushStroke.Opacity = 1;

            stackedColumnSeries.Title             = MinerPaymentSummary.CoinType.ToString();
            stackedColumnSeries.LineSmoothness    = 0.7;
            stackedColumnSeries.PointGeometrySize = 6;
            stackedColumnSeries.Fill = brushFill;

            stackedColumnSeries.Stroke          = brushStroke;
            stackedColumnSeries.StrokeThickness = 1;
        }
Esempio n. 14
0
        private Dictionary <string, object> CodigoDeAdomd2DimensionSA(string query)
        {
            Dictionary <string, object> resultado = new Dictionary <string, object>();
            AdomdConnection             con       = new AdomdConnection("Data Source=DESKTOP-MF82JHU;catalog=FullOlapCube");

            con.Open();
            AdomdCommand    cmd             = new AdomdCommand(query, con);
            CellSet         cs              = cmd.ExecuteCellSet();
            TupleCollection tuplesOnColumns = cs.Axes[0].Set.Tuples;

            Microsoft.AnalysisServices.AdomdClient.Tuple tp = cs.Axes[1].Set.Tuples[1];
            string tituloX = tp.Members[0].ParentLevel.Caption;
            string tituloY = "";

            foreach (Microsoft.AnalysisServices.AdomdClient.Tuple column in tuplesOnColumns)
            {
                tituloY = column.Members[0].Caption;
            }

            TupleCollection tuplesOnRows = cs.Axes[1].Set.Tuples;
            //List<string> listaNombres = new List<string>();
            //List<double> listaValores = new List<double>();
            int row    = 0;
            int rowAux = 0;
            List <LineSeries> seriesList  = new List <LineSeries>();
            List <string>     seriesLabel = new List <string>();

            //Convert cvv = new Convert();
            while (row < tuplesOnRows.Count)
            {
                string            firstCategory = tuplesOnRows[rowAux].Members[0].Caption;
                StackedAreaSeries ls            = new StackedAreaSeries();
                ls.Title = firstCategory;
                ChartValues <DateTimePoint> cv = new ChartValues <DateTimePoint>();

                while (tuplesOnRows[row].Members[0].Caption == firstCategory)
                {
                    //for (int members = 0; members < tuplesOnRows[row].Members.Count; members++)
                    //{
                    DateTimePoint dtp = new DateTimePoint();
                    dtp.DateTime = new DateTime(Convert.ToInt32(tuplesOnRows[row].Members[1].Caption), 1, 1);
                    seriesLabel.Add(tuplesOnRows[row].Members[1].Caption);
                    //}
                    for (int col = 0; col < tuplesOnColumns.Count; col++)
                    {
                        dtp.Value = Convert.ToDouble(cs.Cells[col, row].FormattedValue);
                        cv.Add(dtp);
                        //listaValores.Add(Convert.ToDouble(cs.Cells[col, row].FormattedValue));
                    }
                    row++;
                    if (row == tuplesOnRows.Count)
                    {
                        break;
                    }
                }
                ls.Values = cv;
                rowAux    = row;
                seriesList.Add(ls);
            }



            con.Close();
            resultado.Add("listaNombres", seriesLabel);
            resultado.Add("listaValores", seriesList);
            resultado.Add("tituloX", tituloX);
            resultado.Add("tituloY", tituloY);
            return(resultado);
        }
Esempio n. 15
0
        void Update()
        {
            chart.Series.Clear();
            for (int r = 0; r < dt.Rows.Count; r++)
            {
                Series CSeries;

                if (Ctype == ChartType.Chart_Type.PieChart)
                {
                    CSeries = new PieSeries();
                }
                else if (Ctype == ChartType.Chart_Type.ColumnChart)
                {
                    CSeries = new ColumnSeries();
                }
                else if (Ctype == ChartType.Chart_Type.RowChart)
                {
                    CSeries = new RowSeries();
                }
                else if (Ctype == ChartType.Chart_Type.StackedColumnChart)
                {
                    CSeries = new StackedColumnSeries();
                }
                else if (Ctype == ChartType.Chart_Type.StackedRowChart)
                {
                    CSeries = new StackedRowSeries();
                }
                else if (Ctype == ChartType.Chart_Type.StackedAreaChart)
                {
                    CSeries = new StackedAreaSeries();
                }
                else if (Ctype == ChartType.Chart_Type.StepLineChart)
                {
                    CSeries = new StepLineSeries();
                }
                else
                {
                    CSeries = new LineSeries();
                }

                CSeries.Values = new ChartValues <double> {
                };
                for (int c = 0; c < dt.Columns.Count; c++)
                {
                    // Debug.WriteLine(dt.Rows[r].Field<double?>(c));
                    if (dt.Rows[r].Field <double?>(c) != null)
                    {
                        CSeries.Values.Add(dt.Rows[r].Field <double>(c));
                    }
                }//columns

                if (r < ListBox_Customization.Items.Count)
                {
                    StackPanel panel = (StackPanel)ListBox_Customization.Items[r];
                    CSeries.Title      = ((TextBox)panel.Children[0]).Text;
                    CSeries.DataLabels = (((CheckBox)panel.Children[1]).IsChecked == true);

                    double size = 10;
                    if (double.TryParse(((TextBox)panel.Children[2]).Text, out size) == false)
                    {
                        size = 10;
                    }

                    CSeries.FontSize = size;
                    CSeries.Stroke   = ((Rectangle)((StackPanel)panel.Children[3]).Children[0]).Fill;
                    double sth = 0;
                    if (double.TryParse(((TextBox)panel.Children[4]).Text, out sth))
                    {
                        CSeries.StrokeThickness = sth;
                    }

                    /*
                     * if ((((CheckBox)panel.Children[4]).IsChecked == true))
                     *  CSeries.Fill = ((Rectangle)((StackPanel)panel.Children[5]).Children[0]).Fill;
                     * else
                     *  CSeries.Fill = null;*/
                }
                else
                {
                    CSeries.Title      = "R" + r;
                    CSeries.DataLabels = true;
                }

                chart.Series.Add(CSeries);
            }//rows


            if (RB_CusColors.IsChecked == true)
            {
                ColorsCollection colorsCollection = new ColorsCollection();

                for (int i = 0; i < ListBox_Colors.Items.Count; i++)
                {
                    StackPanel stack = (StackPanel)ListBox_Colors.Items[i];
                    colorsCollection.Add(((SolidColorBrush)((Rectangle)stack.Children[0]).Fill).Color);
                }

                chart.SeriesColors = colorsCollection;
            }
            else
            {
                chart.SeriesColors = null;
            }
        }
Esempio n. 16
0
        public void SetLineSeries(DataPtSet PollenDataSet, SeriesChartType ChartMode)
        {
            DataList  = PollenDataSet;
            ChartType = ChartMode;

            List <double>     DbList      = new List <double>();
            LineSeries        tLineSeries = new LineSeries();
            StackedAreaSeries tAreaSeries = new StackedAreaSeries();

            tLineSeries.PointGeometry = DefaultGeometries.None;
            tLineSeries.Fill          = null;
            tAreaSeries.PointGeometry = DefaultGeometries.None;
            tAreaSeries.Fill          = null;

            tLineSeries = (SetProperties(tLineSeries, DataList.Points[0]));
            tAreaSeries = (SetProperties(tAreaSeries, DataList.Points[0]));

            switch (ChartType)
            {
            case SeriesChartType.Point:

                ChartSequence = (SetProperties(tLineSeries, DataList.Points[0]));
                foreach (DataPt D in DataList.Points)
                {
                    LineSeries NewSeries = new LineSeries {
                        Values = new ChartValues <double> {
                            D.Number
                        }
                    };
                    NewSeries = SetProperties(NewSeries, D);

                    DbList.Add(D.Number);
                    ChartSeries.Add(NewSeries);
                }
                break;

            case SeriesChartType.Line:

                tLineSeries.Fill           = Brushes.Transparent;
                tLineSeries.LineSmoothness = 0;
                ChartSequence = tLineSeries;
                foreach (DataPt D in DataList.Points)
                {
                    DbList.Add(D.Number);
                    LineSeries NewSeries = new LineSeries {
                        Values = new ChartValues <double> {
                            D.Number
                        }
                    };
                    NewSeries = SetProperties(NewSeries, D);

                    ChartSeries.Add(NewSeries);
                }
                break;

            case SeriesChartType.Spline:
                tLineSeries.Fill = Brushes.Transparent;
                ChartSequence    = tLineSeries;
                foreach (DataPt D in DataList.Points)
                {
                    LineSeries NewSeries = new LineSeries {
                        Values = new ChartValues <double> {
                            D.Number
                        }
                    };
                    NewSeries = SetProperties(NewSeries, D);

                    DbList.Add(D.Number);
                    ChartSeries.Add(NewSeries);
                }
                break;

            case SeriesChartType.StepLine:
                StepLineSeries StepSeries = new StepLineSeries();
                StepSeries.AlternativeStroke = DataList.Points[0].Graphics.GetStrokeBrush();
                StepSeries = SetProperties(StepSeries, DataList.Points[0]);

                ChartSequence = StepSeries;
                foreach (DataPt D in DataList.Points)
                {
                    StepLineSeries NewSeries = new StepLineSeries {
                        Values = new ChartValues <double> {
                            D.Number
                        }
                    };
                    NewSeries = SetProperties(NewSeries, D);

                    DbList.Add(D.Number);
                    ChartSeries.Add(NewSeries);
                }
                break;

            case SeriesChartType.Area:
                ChartSequence = tLineSeries;
                foreach (DataPt D in DataList.Points)
                {
                    LineSeries NewSeries = new LineSeries {
                        Values = new ChartValues <double> {
                            D.Number
                        }
                    };
                    NewSeries = SetProperties(NewSeries, D);

                    DbList.Add(D.Number);
                    ChartSeries.Add(NewSeries);
                }
                break;

            case SeriesChartType.AreaStack:
                tAreaSeries.LineSmoothness = 0;
                ChartSequence = tAreaSeries;
                foreach (DataPt D in DataList.Points)
                {
                    StackedAreaSeries NewSeries = new StackedAreaSeries {
                        Values = new ChartValues <double> {
                            D.Number
                        }
                    };
                    NewSeries = SetProperties(NewSeries, D);

                    DbList.Add(D.Number);
                    ChartSeries.Add(NewSeries);
                }
                break;

            case SeriesChartType.AreaStack100:
                tAreaSeries.LineSmoothness = 0;
                tAreaSeries.StackMode      = StackMode.Percentage;
                ChartSequence = tAreaSeries;
                foreach (DataPt D in DataList.Points)
                {
                    StackedAreaSeries NewSeries = new StackedAreaSeries {
                        Values = new ChartValues <double> {
                            D.Number
                        }
                    };
                    NewSeries = SetProperties(NewSeries, D);

                    DbList.Add(D.Number);
                    ChartSeries.Add(NewSeries);
                }
                break;

            case SeriesChartType.SplineArea:
                ChartSequence = tLineSeries;
                foreach (DataPt D in DataList.Points)
                {
                    LineSeries NewSeries = new LineSeries {
                        Values = new ChartValues <double> {
                            D.Number
                        }
                    };
                    NewSeries = SetProperties(NewSeries, D);

                    DbList.Add(D.Number);
                    ChartSeries.Add(NewSeries);
                }
                break;

            case SeriesChartType.SplineAreaStack:
                ChartSequence = tAreaSeries;
                foreach (DataPt D in DataList.Points)
                {
                    StackedAreaSeries NewSeries = new StackedAreaSeries {
                        Values = new ChartValues <double> {
                            D.Number
                        }
                    };
                    NewSeries = SetProperties(NewSeries, D);

                    DbList.Add(D.Number);
                    ChartSeries.Add(NewSeries);
                }
                break;

            case SeriesChartType.SplineAreaStack100:
                tAreaSeries.StackMode = StackMode.Percentage;
                ChartSequence         = tAreaSeries;
                foreach (DataPt D in DataList.Points)
                {
                    StackedAreaSeries NewSeries = new StackedAreaSeries {
                        Values = new ChartValues <double> {
                            D.Number
                        }
                    };
                    NewSeries = SetProperties(NewSeries, D);

                    DbList.Add(D.Number);
                    ChartSeries.Add(NewSeries);
                }
                break;
            }
            ChartSequence.Values = new ChartValues <double>(DbList.ToArray());
            //Set unique properties of the control
        }
        private void cmbAzmon_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            gpChart.Visibility = Visibility.Visible;
            double[] values = new double[] { };

            try
            {
                dynamic getGroupName = cmbGroups.SelectedItem;
                string  gpName       = getGroupName.GroupName;
                dynamic getDateText  = cmbAzmon.SelectedItem;
                string  dPass        = getDateText.DatePass;
                using (var db = new DataClass.myDbContext())
                {
                    dynamic selectedItem = dataGrid.SelectedItems[0];
                    long    uId          = selectedItem.Id;
                    var     data         = db.AHistories.Where(x => x.UserId == uId && x.DatePass == dPass && x.GroupName.Equals(gpName)).Select(x => x).OrderByDescending(x => x.DatePass).ToList();
                    values = new double[] { data.FirstOrDefault().TrueItem, data.FirstOrDefault().FalseItem, data.FirstOrDefault().NoneItem };

                    Series series = new ColumnSeries();

                    switch (FindElement.Settings.ChartType ?? 0)
                    {
                    case 0:
                        series = new ColumnSeries {
                        };
                        break;

                    case 1:
                        series = new StackedColumnSeries {
                        };
                        break;

                    case 2:
                        series = new LineSeries {
                        };
                        break;

                    case 3:
                        series = new StepLineSeries {
                        };
                        break;

                    case 4:
                        series = new StackedAreaSeries {
                        };
                        break;
                    }

                    if (series.GetType() == typeof(ColumnSeries))
                    {
                        AchievementChart.Series.Add(new ColumnSeries
                        {
                            Values          = new ChartValues <double>(values),
                            StrokeDashArray = new System.Windows.Media.DoubleCollection(20)
                        });
                    }
                    else if (series.GetType() == typeof(LineSeries))
                    {
                        AchievementChart.Series.Add(new LineSeries
                        {
                            Values          = new ChartValues <double>(values),
                            StrokeDashArray = new System.Windows.Media.DoubleCollection(20)
                        });
                    }
                    else if (series.GetType() == typeof(StackedAreaSeries))
                    {
                        AchievementChart.Series.Add(new StackedAreaSeries
                        {
                            Values          = new ChartValues <double>(values),
                            StrokeDashArray = new System.Windows.Media.DoubleCollection(20)
                        });
                    }
                    else if (series.GetType() == typeof(StackedColumnSeries))
                    {
                        AchievementChart.Series.Add(new StackedColumnSeries
                        {
                            Values          = new ChartValues <double>(values),
                            StrokeDashArray = new System.Windows.Media.DoubleCollection(20)
                        });
                    }
                    else if (series.GetType() == typeof(StepLineSeries))
                    {
                        AchievementChart.Series.Add(new StepLineSeries
                        {
                            Values          = new ChartValues <double>(values),
                            StrokeDashArray = new System.Windows.Media.DoubleCollection(20)
                        });
                    }

                    AchievementChart.AxisX.Add(new Axis
                    {
                        Labels    = new string[] { "پاسخ صحیح", "پاسخ غلط", "بدون پاسخ" },
                        Separator = new LiveCharts.Wpf.Separator {
                        }
                    });
                    txtName.Text = dPass;
                    txtBook.Text = gpName;
                }
            }
            catch (Exception)
            {
            }
        }
Esempio n. 18
0
        //AREA STACK CHART #########################################################################################################################
        public void SetStackAreaChart(bool IsStretched, int Smoothness)
        {
            if (IsStretched)
            {
                if (ChartType != SeriesChartType.AreaStack100)
                {
                    Element.Series.Clear();
                }
                ChartType = SeriesChartType.AreaStack100;
            }
            else
            {
                if (ChartType != SeriesChartType.AreaStack)
                {
                    Element.Series.Clear();
                }
                ChartType = SeriesChartType.AreaStack;
            }

            List <List <double> > DV = new List <List <double> >();

            //Populate Data Set
            for (int i = 0; i < DataGrid.Sets.Count; i++)
            {
                List <double> tDV = new List <double>();

                for (int j = 0; j < DataGrid.Sets[i].Points.Count; j++)
                {
                    tDV.Add(DataGrid.Sets[i].Points[j].Number);
                }
                DV.Add(tDV);
            }

            int C = Element.Series.Count;
            int S = DV.Count;

            for (int i = C; i < S; i++)
            {
                StackedAreaSeries CS = new StackedAreaSeries();
                CS.LineSmoothness = Smoothness;
                if (IsStretched)
                {
                    CS.StackMode = StackMode.Percentage;
                }
                else
                {
                    CS.StackMode = StackMode.Values;
                }

                Element.Series.Add(CS);
                Element.Series[i].Values = new ChartValues <double>(DV[i].ToArray());
            }

            C = Element.Series.Count;

            if (C > S)
            {
                for (int i = S; i < C; i++)
                {
                    Element.Series.RemoveAt(Element.Series.Count - 1);
                }
            }

            C = Element.Series.Count;

            for (int i = 0; i < S; i++)
            {
                int T = Element.Series[i].Values.Count;
                int V = DV[i].Count;

                for (int j = T; j < V; j++)
                {
                    Element.Series[i].Values.Add(1.0);
                }
            }

            for (int i = 0; i < S; i++)
            {
                int T = Element.Series[i].Values.Count;
                int V = DV[i].Count;

                if (T > V)
                {
                    for (int j = V; j < T; j++)
                    {
                        Element.Series[i].Values.RemoveAt(Element.Series[i].Values.Count - 1);
                    }
                }
            }

            for (int i = 0; i < S; i++)
            {
                int V = DV[i].Count;

                for (int j = 0; j < V; j++)
                {
                    Element.Series[i].Values[j] = DV[i][j];
                    SetStackAreaProperties((StackedAreaSeries)Element.Series[i], DataGrid.Sets[i].Points[j]);
                    SetSequenceProperties(i, j, (StackedAreaSeries)Element.Series[i]);
                }
            }
        }
Esempio n. 19
0
        public void DiagrammInit()
        {
            string[] SeriesTitle = new string[] { "Потребл", "Продажа", "Потери" };
            int      i           = 0;
            int      dlina       = MonthUseList.Count();

            SeriesCollection.Clear();
            StackedAreaSeries ls1 = new StackedAreaSeries
            {
                Title           = SeriesTitle[i],
                LineSmoothness  = 0,
                DataLabels      = true,
                StrokeThickness = 2.5,
                //Stroke = System.Windows.Media.Brushes.DeepSkyBlue,
                Fill       = System.Windows.Media.Brushes.AliceBlue,
                FontSize   = 10,
                Foreground = System.Windows.Media.Brushes.Black,
                FontWeight = FontWeights.Bold,
                LabelPoint = point => string.Format("{0:N0}", point.Y),
                Values     = new ChartValues <ObservableValue>(ValueYFill(SeriesTitle[i]))
            };
            StackedAreaSeries ls2 = new StackedAreaSeries
            {
                Title           = SeriesTitle[i + 1],
                LineSmoothness  = 0,
                DataLabels      = true,
                StrokeThickness = 2.5,
                //Stroke = System.Windows.Media.Brushes.Red,
                Fill       = System.Windows.Media.Brushes.Pink,
                FontSize   = 10,
                Foreground = System.Windows.Media.Brushes.Black,
                FontWeight = FontWeights.Bold,
                LabelPoint = point => string.Format("{0:N0}", point.Y),
                Values     = new ChartValues <ObservableValue>(ValueYFill(SeriesTitle[i + 1]))
            };
            StackedAreaSeries ls3 = new StackedAreaSeries
            {
                Title           = SeriesTitle[i + 2],
                LineSmoothness  = 0,
                DataLabels      = true,
                FontSize        = 10,
                StrokeThickness = 2.5,
                Foreground      = System.Windows.Media.Brushes.Black,
                Stroke          = System.Windows.Media.Brushes.DarkRed,
                Fill            = System.Windows.Media.Brushes.Moccasin,
                FontWeight      = FontWeights.Bold,
                LabelPoint      = point => string.Format("{0:N0}", point.Y),
                AreaLimit       = 0,
                Values          = new ChartValues <ObservableValue>(ValueYFill(SeriesTitle[i + 2]))
            };

            SeriesCollection.Add(ls1);
            SeriesCollection.Add(ls2);
            SeriesCollection.Add(ls3);

            Labels.Clear();
            foreach (var newX in MonthUseList)
            {
                Labels.Add(newX.Period.ToString());
            }
            ;


            //Labels.Clear();
            //Labels = ObservableCollection<string>(MonthUseList.Select(x => x.Period));

            ChartValues <ObservableValue> ValueYFill(string typeSeries = "")
            {
                ChartValues <ObservableValue> rez = new ChartValues <ObservableValue>();

                switch (typeSeries)
                {
                case ("Потребл"):
                    foreach (ViewFabricateUse newY in MonthUseList)
                    {
                        rez.Add(new ObservableValue(newY.Fact1));
                    }
                    break;

                case ("Продажа"):
                    foreach (ViewFabricateUse newY in MonthUseList)
                    {
                        rez.Add(new ObservableValue(newY.Fact0));
                    }
                    break;

                case ("Потери"):
                    foreach (ViewFabricateUse newY in MonthUseList)
                    {
                        rez.Add(new ObservableValue(newY.Loss));
                    }
                    break;
                }
                return(rez);
            }
        }
Esempio n. 20
0
        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="info">The information about COVID19 for each country.</param>
        public CountryView(IReadOnlyList <CountryInfoEx> info)
        {
            const long animationSpeedGraph = 0;
            const long animationSpeedGauge = 5000000;

            IReadOnlyList <CountryInfoEx> countries = info;

            // information used for normalize
            CountryInfoEx _mostConfirmed;
            CountryInfoEx _mostDeaths;
            CountryInfoEx _mostRecovered;

            _startDate   = countries[0].DaysInfo[0].Date.ToDateTime();
            NumberOfDays = countries[0].DaysInfo.Count;

            _mostConfirmed = Utils.MaxElement(countries, (CountryInfoEx a, CountryInfoEx b) => a.Confirmed > b.Confirmed);
            _mostDeaths    = Utils.MaxElement(countries, (CountryInfoEx a, CountryInfoEx b) => a.Deaths > b.Deaths);
            _mostRecovered = Utils.MaxElement(countries, (CountryInfoEx a, CountryInfoEx b) => a.Recovered > b.Recovered);

            _confirmed = new long[NumberOfDays];
            _deaths    = new long[NumberOfDays];
            _recovered = new long[NumberOfDays];

            // build the chart with numbers of infected people
            _stackedAreaRecovered = new StackedAreaSeries
            {
                Title          = "Recovered",
                Values         = GetRegionChartValues(new long[1], _startDate),
                LineSmoothness = 0
            };

            _stackedAreaDead = new StackedAreaSeries
            {
                Title          = "Deaths",
                Values         = GetRegionChartValues(new long[1], _startDate),
                LineSmoothness = 0
            };

            _stackedAreaConfirmed = new StackedAreaSeries
            {
                Title          = "Active",
                Values         = GetRegionChartValues(new long[1], _startDate),
                LineSmoothness = 0
            };

            _stackedAreaRecovered.Fill    = System.Windows.Media.Brushes.MediumSeaGreen;
            _stackedAreaDead.Fill         = System.Windows.Media.Brushes.Crimson;
            _stackedAreaConfirmed.Fill    = System.Windows.Media.Brushes.Gold;
            _cartesianChartRegions.Series = new SeriesCollection
            {
                _stackedAreaDead,
                _stackedAreaConfirmed,
                _stackedAreaRecovered,
            };

            _cartesianChartRegions.AnimationsSpeed   = new TimeSpan(animationSpeedGraph);
            _solidGaugeDeathRate.AnimationsSpeed     = new TimeSpan(animationSpeedGauge);
            _solidGaugeInfectionRage.AnimationsSpeed = new TimeSpan(animationSpeedGauge);
            _solidGaugeRecoveryRate.AnimationsSpeed  = new TimeSpan(animationSpeedGauge);

            _cartesianChartRegions.AxisX.Add(new Axis
            {
                LabelFormatter = value => new DateTime((long)value).ToString("dd-MMM")
            });
            _cartesianChartRegions.AxisY.Add(new Axis
            {
                Title          = "Number of people",
                LabelFormatter = value => ((long)value).ToString("N0")
            });

            _cartesianChartRegions.LegendLocation = LegendLocation.Right;

            // build the solid gauge for confirmed infected people rate
            _solidGaugeInfectionRage.From  = 0;
            _solidGaugeInfectionRage.To    = Math.Log(_mostConfirmed.Confirmed);
            _solidGaugeInfectionRage.Value = 0;
            _solidGaugeInfectionRage.Base.LabelsVisibility = Visibility.Hidden;
            _solidGaugeInfectionRage.LabelFormatter        = value => value.ToString();
            _solidGaugeInfectionRage.Base.GaugeActiveFill  = new LinearGradientBrush
            {
                GradientStops = new GradientStopCollection
                {
                    new GradientStop(Colors.DarkOrange, 0),
                    new GradientStop(Colors.Gold, 0.5),
                    new GradientStop(Colors.Yellow, 1)
                }
            };

            // build the solid gauge for death rate
            _solidGaugeDeathRate.From  = 0;
            _solidGaugeDeathRate.To    = Math.Log(_mostDeaths.Deaths);
            _solidGaugeDeathRate.Value = 0;
            _solidGaugeDeathRate.Base.LabelsVisibility = Visibility.Hidden;
            _solidGaugeDeathRate.LabelFormatter        = value => value.ToString();
            _solidGaugeDeathRate.Base.GaugeActiveFill  = new LinearGradientBrush
            {
                GradientStops = new GradientStopCollection
                {
                    new GradientStop(Colors.Firebrick, 0),
                    new GradientStop(Colors.Crimson, 0.5),
                    new GradientStop(Colors.Red, 1)
                }
            };

            // build the solid gauge for recovery rate
            _solidGaugeRecoveryRate.From  = 0;
            _solidGaugeRecoveryRate.To    = Math.Log(_mostRecovered.Recovered);
            _solidGaugeRecoveryRate.Value = 0;
            _solidGaugeRecoveryRate.Base.LabelsVisibility = Visibility.Hidden;
            _solidGaugeRecoveryRate.LabelFormatter        = value => value.ToString();
            _solidGaugeRecoveryRate.Base.GaugeActiveFill  = new LinearGradientBrush
            {
                GradientStops = new GradientStopCollection
                {
                    new GradientStop(Colors.DarkGreen, 0),
                    new GradientStop(Colors.MediumSeaGreen, 0.5),
                    new GradientStop(Colors.Chartreuse, 1)
                }
            };

            // buid the page layout as a table layout
            _tableLayoutPanel.Dock        = DockStyle.Fill;
            _tableLayoutPanel.RowCount    = 3;
            _tableLayoutPanel.ColumnCount = 3;

            _tableLayoutPanel.RowStyles.Add(new RowStyle(SizeType.Percent, 10));
            _tableLayoutPanel.RowStyles.Add(new RowStyle(SizeType.Percent, 60));
            _tableLayoutPanel.RowStyles.Add(new RowStyle(SizeType.Percent, 30));
            _tableLayoutPanel.RowStyles.Add(new RowStyle(SizeType.Percent, 10));

            _tableLayoutPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 33));
            _tableLayoutPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 33));
            _tableLayoutPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 33));

            // row 0
            Font fontTitle = new Font("Microsoft Sans Serif", 15F, System.Drawing.FontStyle.Bold);

            _labelTitle = new Label
            {
                Text     = "",
                AutoSize = true,
                Font     = fontTitle,
                Anchor   = AnchorStyles.None
            };
            _tableLayoutPanel.Controls.Add(_labelTitle, 1, 0);

            // row 1
            _tableLayoutPanel.Controls.Add(_cartesianChartRegions, 0, 1);
            _tableLayoutPanel.SetColumnSpan(_cartesianChartRegions, 3);

            _cartesianChartRegions.Dock = DockStyle.Fill;

            // row 2
            _tableLayoutPanel.Controls.Add(_solidGaugeInfectionRage, 0, 2);
            _solidGaugeInfectionRage.Anchor = AnchorStyles.None;

            _tableLayoutPanel.Controls.Add(_solidGaugeDeathRate, 1, 2);
            _solidGaugeDeathRate.Anchor = AnchorStyles.None;

            _tableLayoutPanel.Controls.Add(_solidGaugeRecoveryRate, 2, 2);
            _solidGaugeRecoveryRate.Anchor = AnchorStyles.None;

            // row 3
            Font font = new Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Bold);

            _tableLayoutPanel.Controls.Add(new Label
            {
                Text = (_mostConfirmed.Confirmed > 1000000 ? $"Reference value: {Math.Round(_mostConfirmed.Confirmed / 1000000.0, 2)}M ({_mostConfirmed.Name})" :
                        $"Reference value: {Math.Round(_mostConfirmed.Confirmed / 1000.0, 2)}K ({_mostConfirmed.Name})"),
                AutoSize = true,
                Font     = font,
                Anchor   = AnchorStyles.None
            }, 0, 3);

            _tableLayoutPanel.Controls.Add(new Label
            {
                Text = (_mostDeaths.Deaths > 1000000 ? $"Reference value: {Math.Round(_mostDeaths.Deaths / 1000000.0, 2)}M ({_mostDeaths.Name})" :
                        $"Reference value: {Math.Round(_mostDeaths.Deaths / 1000.0, 2)}K ({_mostDeaths.Name})"),
                AutoSize = true,
                Font     = font,
                Anchor   = AnchorStyles.None
            }, 1, 3);

            _tableLayoutPanel.Controls.Add(new Label
            {
                Text = (_mostRecovered.Recovered > 1000000 ? $"Reference value: {Math.Round(_mostRecovered.Recovered / 1000000.0, 2)}M ({_mostRecovered.Name})" :
                        $"Reference value: {Math.Round(_mostRecovered.Recovered / 1000.0, 2)}K ({_mostRecovered.Name})"),
                AutoSize = true,
                Font     = font,
                Anchor   = AnchorStyles.None
            }, 2, 3);

            _tabPage.Padding = new Padding(30);
            _tabPage.Controls.Add(_tableLayoutPanel);

            UpdateChart(_mostConfirmed);
        }
        private void difference_Click(object sender, EventArgs e)
        {
            cartesianChart1.Series.Clear();
            Dictionary <string, string> dictionary = new Dictionary <string, string>();

            dictionary.Add("Municipios", citiesComboBox.Text);

            dm.filterDataForHarvested(dictionary);

            SeriesCollection harvestedSerie = new SeriesCollection();

            StackedAreaSeries hSerie = new StackedAreaSeries();
            StackedAreaSeries pSerie = new StackedAreaSeries();



            hSerie.Title = "Harvested";
            pSerie.Title = "Planted";

            ChartValues <ScatterPoint> cvalues = new ChartValues <ScatterPoint>();
            ScatterPoint pair;


            foreach (CropMeasurement cm in dm.Harvested)
            {
                if (cm.A_o >= 2011 && cm.A_o <= 2017)
                {
                    pair = new ScatterPoint(cm.A_o, cm.getTypeCrop(cropCombobox.Text));
                    cvalues.Add(pair);
                }
            }
            hSerie.Values         = cvalues;
            hSerie.LineSmoothness = 0;

            dm.filterDataForPlanted(dictionary);

            ChartValues <ScatterPoint> cvalues2 = new ChartValues <ScatterPoint>();
            ScatterPoint pair2;

            foreach (CropMeasurement cm in dm.Planted)
            {
                if (cm.A_o >= 2011 && cm.A_o <= 2017)
                {
                    pair2 = new ScatterPoint(cm.A_o, cm.getTypeCrop(cropCombobox.Text));
                    cvalues2.Add(pair2);
                }
            }
            pSerie.Values         = cvalues2;
            pSerie.LineSmoothness = 0;


            harvestedSerie.Add(hSerie);
            harvestedSerie.Add(pSerie);


            cartesianChart1.Series = harvestedSerie;

            cartesianChart1.AxisX = new AxesCollection
            {
                new Axis {
                    Title = "Date",
                    //LabelFormatter = value => new DateTime((long)value).ToShortDateString()
                },
            };
        }
Esempio n. 22
0
 public void SetStackAreaProperties(StackedAreaSeries Ser, DataPt Pt)
 {
     Ser.PointForeground   = Pt.Marker.Graphics.GetBackgroundBrush();
     Ser.PointGeometrySize = Pt.Marker.Radius;
 }