Avatar billede krukken Juniormester
13. marts 2016 - 00:28

Oprettelse af graf

Hej med jer,

Jeg er ved at forsøge at lave en graf i C# (og i MVC). Jeg vil gerne lave et stackedbar100 diagram, og kunne give "3" værdier til hver "bar." Jeg har prøve alt, og jeg kan ikke få angivet og stillet data til rådighed for graften, så det vises korrekt. (Jeg får vist en graf, men søjlen bliver ikke delt i 3.

Kan nogen hjælpe mig? Jeg har angivet min kode nedenfor:
        public async Task<FileResult> Test()
        {
            SeriesChartType type = SeriesChartType.StackedBar;
           
            IList<ResultModel> peoples = new List<ResultModel>();
            ResultModel model = new ResultModel();
            model.Name = "Kampange1";
            model.Values = new double[] {35};
            peoples.Add(model);
            ResultModel model2 = new ResultModel();
            model2.Name = "Kampange1";
            model2.Values = new double[] { 25 };
            peoples.Add(model2);
            ResultModel model1 = new ResultModel();
            model1.Name = "Kampange2";
            model1.Values = new double[] { 60};
            peoples.Add(model1);
           
            System.Web.UI.DataVisualization.Charting.Chart chart = new System.Web.UI.DataVisualization.Charting.Chart();
            chart.Palette = ChartColorPalette.BrightPastel;
            chart.Width = 700;
            chart.Height = 300;
            chart.BackColor = Color.FromArgb(211, 223, 240);
            chart.BorderlineDashStyle = ChartDashStyle.Solid;
            chart.BackSecondaryColor = Color.White;
            chart.BackGradientStyle = GradientStyle.TopBottom;
            chart.BorderlineWidth = 1;
            chart.Palette = ChartColorPalette.BrightPastel;
            chart.BorderlineColor = Color.FromArgb(26, 59, 105);
            chart.RenderType = RenderType.BinaryStreaming;
            chart.BorderSkin.SkinStyle = BorderSkinStyle.Emboss;
            chart.AntiAliasing = AntiAliasingStyles.All;
            chart.TextAntiAliasingQuality = TextAntiAliasingQuality.Normal;
            chart.Titles.Add(CreateTitle());
            chart.Legends.Add(CreateLegend());
            chart.Series.Add(CreateSeries(peoples, type));
            chart.ChartAreas.Add(CreateChartArea());

            MemoryStream ms = new MemoryStream();
            chart.SaveImage(ms);
            return File(ms.GetBuffer(), @"image/png");

        }

        public Legend CreateLegend()
        {
            Legend legend = new Legend();
            legend.Name = "Result Chart";
            legend.Docking = Docking.Bottom;
            legend.Alignment = StringAlignment.Center;
            legend.BackColor = Color.Transparent;
            legend.Font = new Font(new FontFamily("Trebuchet MS"), 9);
            legend.LegendStyle = LegendStyle.Row;

            return legend;
        }

        public Title CreateTitle()
        {
            Title title = new Title();
            title.Text = "Result Chart";
            title.ShadowColor = Color.FromArgb(32, 0, 0, 0);
            title.Font = new Font("Trebuchet MS", 14F, FontStyle.Bold);
            title.ShadowOffset = 3;
            title.ForeColor = Color.FromArgb(26, 59, 105);
            return title;
        }

        public Series CreateSeries(IList<ResultModel> results, SeriesChartType chartType)
        {
            Series seriesDetail = new Series();
            seriesDetail.Name = "Result Chart";
            seriesDetail.IsValueShownAsLabel = true;
            seriesDetail.Palette = ChartColorPalette.Pastel;
            seriesDetail.ChartType = chartType;
            seriesDetail.BorderWidth = 2;


            foreach (ResultModel result in results)
            {
                DataPoint point = new DataPoint();
                point.AxisLabel = result.Name;
                point.YValues = result.Values;
                seriesDetail.Points.Add(point);
            }
            seriesDetail.ChartArea = "Result Chart";
            return seriesDetail;
        }

        public ChartArea CreateChartArea()
        {
            ChartArea chartArea = new ChartArea();
            chartArea.Name = "Result Chart";
            chartArea.BackColor = Color.Transparent;
            chartArea.AxisX.IsLabelAutoFit = false;
            chartArea.AxisY.IsLabelAutoFit = false;
            chartArea.AxisX.LabelStyle.Font =
              new Font("Verdana,Arial,Helvetica,sans-serif",
                        8F, FontStyle.Regular);
            chartArea.AxisY.LabelStyle.Font =
              new Font("Verdana,Arial,Helvetica,sans-serif",
                        8F, FontStyle.Regular);
            chartArea.AxisY.LineColor = Color.FromArgb(64, 64, 64, 64);
            chartArea.AxisX.LineColor = Color.FromArgb(64, 64, 64, 64);
            chartArea.AxisY.MajorGrid.LineColor = Color.FromArgb(64, 64, 64, 64);
            chartArea.AxisX.MajorGrid.LineColor = Color.FromArgb(64, 64, 64, 64);
            chartArea.AxisX.Interval = 1;
            return chartArea;
        }
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester