У вас есть выбор:
Вы можете удалить точку слева для каждой точки, которую вы добавили справа (после определенного числа)
Можно сместить оси X Minimum
и Maximum
значения
Вы можете настроить график на увеличение и панорамирование, а затем на панорамирование, т.е. переместите ScaleView
Первый вариант прост и будет поддерживать постоянным число точек данных. Это может быть хорошо или плохо, в зависимости от ваших потребностей.
Два других будут сохранять набор точек и только панорамировать на графике.
Общие ссылки:
ChartArea ca = chart.ChartAreas[0];
Series s = chart.Series[0];
Вот код для 1-го варианта:
s.Points.AddXY(..);
s.Points.RemoveAt(0);
ca.AxisX.Minimum = double.NaN;
ca.AxisX.Maximum = double.NaN;
ca.RecalculateAxesScale();
Вот код для варианта 2:
int ix = s.Points.AddXY(..);
ca.AxisX.Maximum = s.Points[ix].XValue;
ca.AxisX.Minimum += s.Points[ix].XValue - s.Points[ix-1].XValue;
ca.RecalculateAxesScale();
Вот код для варианта 3:
int ix = s.Points.AddXY(..);
ca.AxisX.Minimum = double.NaN;
ca.AxisX.Maximum = double.NaN;
ca.RecalculateAxesScale();
ca.AxisX.ScaleView.Zoom(s.Points[ix-pointMax ].XValue, s.Points[ix].XValue );
Предполагается, что в серии уже есть pointMax
очков.
Все примеры предполагают, что у вас уже есть несколько пунктов. Опции 1 и 3 также предполагают, что ни Minimum
, ни Maximum
оси x не установлены, т.е. они double.NaN
.
Последний вариант позволит вам удобно просматривать данные.
1-й поддерживает низкое количество точек данных, но теряет все, кроме последних.
Давайте посмотрим все варианты на работе:
Обратите внимание, что варианты 2 и 3 также предполагают, что у вас есть допустимые значения x. Если вы этого не сделаете, вам нужно сделать индексирование по оси X и использовать индекс точек вместо значений.