как рисовать цветные линии на графике в зависимости от данных - PullRequest
0 голосов
/ 05 мая 2020

безуспешно пытается провести линии между пузырями в зависимости от их движения. если следующее значение в массиве больше предыдущего, между ними будет проведена зеленая линия, но если следующее значение меньше предыдущего, будет нарисована красная линия. Я написал al oop, но работает некорректно - а строки перерисованы. https://prnt.sc/sbcsjy Вот код, который у меня есть:

            int[] year = { 2010, 2011, 2012, 2013, 2014, 2015, 2016 };
            double max_axisX = 1.071;
            double intervalOffset_axisX = 0.266;

            ////                2010   2011   2012   2013   2014   2015   2016
            double[] ipp = { 0.241, 0.289, 0.129, 0.396, 0.682, 0.599, 1.00 };
            double[] pgc = { 0.154, 0.091, 0.176, 0.185, 0.144, 0.23, 0.23 };

       // show data in listbox
            for (int i = 0; i < ipp.Length; i++)
            {
                listBox2.Items.Add(" " + year[i] + " " + " " + ipp[i]);
            }
       // series
            Series series_1 = chart1.Series.Add("bubble-chart");
            Series series_2 = chart1.Series.Add("green-line");
            Series series_3 = chart1.Series.Add("red-line");


            // series 1
            series_1.ChartType = SeriesChartType.Bubble;
            series_1.MarkerStyle = MarkerStyle.Circle;
            series_1.BorderWidth = 1;
            series_1.Color = Color.Transparent;
            series_1.BorderColor = Color.Black;
            series_1["BubbleScaleMin"] = "0";

            // series 2
            series_2.ChartType = SeriesChartType.Line;
            series_2.Color = Color.Green;
            series_2.BorderWidth = 10;

            // series 3
            series_3.ChartType = SeriesChartType.Line;
            series_3.Color = Color.Red;
            series_3.BorderWidth = 3;

            // plotting chart
            for (int i = 0; i < ipp.Length; i++)
            {
                series_1.Points.AddXY(ipp[i], pgc[i], ipp[i]);
                series_1.Points[i].Label = Convert.ToString(year[i]);
                series_1.Font = new Font(Font.FontFamily, 12);
                series_1.LabelBackColor = Color.White;
                series_1.LabelBorderColor = Color.Black;
            }
            // plotting lines

            for (int i = 0; i < ipp.Length - 1; i++)
            {
                if (ipp[i + 1] > ipp[i])
                {

                    series_2.Points.AddXY(ipp[i], pgc[i]);
                    series_2.Points.AddXY(ipp[i + 1], pgc[i + 1]);

                }
                else if (ipp[i] > ipp[i + 1])
                {

                    series_3.Points.AddXY(ipp[i + 1], pgc[i + 1]);
                    series_3.Points.AddXY(ipp[i], pgc[i]);

                }
            }

Скажите, пожалуйста, где я ошибаюсь. Должно быть похоже на https://prnt.sc/sbct4o

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...