Смещение точек данных на линейной диаграмме

У меня есть линейная диаграмма с 10 точками по оси x, а ось y является переменной. Что мне нужно, так это то, что когда у меня есть (например) точки на x = 3, они перемещаются в конец диаграммы (x = 10). Но когда есть 10 значений (x находится в конце диаграммы), мне нужно удалить первую точку данных в x = 1, и все точки данных смещаются влево, а новое значение записывается в позиции x = 10. Я не мог понять, как это сделать, у меня есть идея, но она работала странно. Спасибо за некоторые идеи.

В винформс работает. Вот изображение диаграммы, например: Пример


person Dufino    schedule 11.01.2021    source источник
comment
На что вы ориентируетесь: Winforms, WPF, ASP..? ВЫ должны всегда ОТМЕЧАТЬ свои вопросы правильно, чтобы их можно было увидеть на странице вопросов! - Очень непонятно, чего вы хотите, что пробовали и что получается. Предполагая MSChart: вы можете добавлять и удалять точки данных любым удобным для вас способом, а также изменять значения x и y любым удобным для вас способом. - Обратите внимание, что для линейных диаграмм (в отличие от многих других типов) фактический порядок определяет внешний вид так же, как и значения! В конце концов, три точки могут быть связаны больше, чем одна.   -  person TaW    schedule 11.01.2021
comment
Прости, мой плохой. Я отредактировал свой пост. Сейчас лучше?   -  person Dufino    schedule 12.01.2021
comment
Не совсем. Может быть, это то, что вы хотите: Series s = chart1.Series[0]; s.Points.RemoveAt(0); int xmax = (int)s.Points.Max(x => x.XValue); s.Points.AddXY(xmax + 1, rnd.Next(8) + 7); chart1.ChartAreas[0].RecalculateAxesScale(); ?   -  person TaW    schedule 12.01.2021
comment
Если вы исправили значения XAxis.Minimum/Maximum: либо не делайте этого, либо измените значения!   -  person TaW    schedule 12.01.2021
comment
Спасибо за попытку. Я нашел решение самостоятельно, опубликованное как ответ.   -  person Dufino    schedule 13.01.2021


Ответы (1)


Решение моей проблемы здесь:

i++;

        if(i<11) { Series s = chart1.Series["Mereni"]; s.Points.AddXY(i, Convert.ToDecimal(textBox1.Text)); }


      if( i > 10) { Series s = chart1.Series["Mereni"];
            
            



            DataPoint s1 = new DataPoint(1,s.Points[1].YValues[0]);
            DataPoint s2 = new DataPoint(2, s.Points[2].YValues[0]);
            DataPoint s3 = new DataPoint(3, s.Points[3].YValues[0]);
            DataPoint s4 = new DataPoint(4, s.Points[4].YValues[0]);
            DataPoint s5 = new DataPoint(5, s.Points[5].YValues[0]);
            DataPoint s6 = new DataPoint(6, s.Points[6].YValues[0]);
            DataPoint s7 = new DataPoint(7, s.Points[7].YValues[0]);
            DataPoint s8 = new DataPoint(8, s.Points[8].YValues[0]);
            DataPoint s9 = new DataPoint(9,s.Points[9].YValues[0]);
            s.Points.Clear();


            s.Points.Add(s1);
            s.Points.Add(s2);
            s.Points.Add(s3);
            s.Points.Add(s4);
            s.Points.Add(s5);
            s.Points.Add(s6);
            s.Points.Add(s7);
            s.Points.Add(s8);
            s.Points.Add(s9);
            s.Points.AddXY(10, Convert.ToDecimal(textBox1.Text));



            /*   s.Points.AddXY(10, Convert.ToDecimal(textBox1.Text)); */
            chart1.ChartAreas[0].RecalculateAxesScale(); }
person Dufino    schedule 13.01.2021