2014-02-20 3 views
3

Я хочу использовать графики MSDN для представления данных в реальном времени, которые я получаю из приложения telnet. Для целей тестирования я добавил кнопку, чтобы изменить диаграмму вручную. Я вручную сделал диаграмму, и она имеет от 0 до 5 точек по оси X со значениями разных значений на X. Серия называется по умолчанию «Series1».Графики MSDN, изменяющие значения точек в реальном времени?

Я попытался следующие:

chart1.Series [ "Series1"] Points.ElementAt (0) .SetValueY (40);. // Ничего не происходит

chart1.Series ["Series1"]. Points.ElementAt (1) .SetValueXY (1, 20); // Ничего не происходит

chart1.Series ["Series1"]. Points [0] .SetValueY (40); // Ничего не происходит

chart1.Series ["Series1"]. Points.ElementAt (1) .YValues.SetValue (10, 0); // Ничего не происходит

chart1.Series ["Series1"]. Points.Clear(); // Удаляет все нужные точки.

Как я могу изменить записи данных на время выполнения?

-EDIT- Если я изменить точку с помощью chart1.Series["Series1"].Points.ElementAt(0).SetValueY(40); и добавить точку после этого с chart1.Series["Series1"].Points.AddXY(1, 40); модифицированной точкой делает встану на это место модифицировано. Вывод состоит в том, что изменение изменяет значение точки Y, но график не обновляется. Функция AddXY() кажется autorefresh. Я не могу найти способ вызвать Refresh() вручную.

+0

Вы пробовали использовать .Update()? – MrPaulch

+0

@MrPaulch Nope, .Update не помогает. – Madmenyo

+0

Кажется, что было .Refresh() then/ – MrPaulch

ответ

7

Позвонить chart1.Refresh() после изменения значения; это заставит перерисовать диаграмму, подбирая новые значения.

+0

Как мне изменить значение? Является ли это одним из вышеперечисленных вопросов? – Madmenyo

+0

Любой из них должен работать. 'chart1.Series [" Series1 "]. Points.ElementAt (1) .YValues ​​= new {10, 0};' также должен работать. Можете ли вы увидеть, как значения обновляются в отладчике? – mmathis

+2

chart1.refresh не существует. Это странно, потому что он указан как член здесь: http://msdn.microsoft.com/en-us/library/system.windows.forms.datavisualization.charting.chart(v=vs.110).aspx – Madmenyo

0

Я делаю это:

public static void Refresh(this Chart chart) // update changed data 
    { 
     chart.Series[0].Points.AddXY(1, 1); 
     chart.Update(); 
     chart.Series[0].Points.RemoveAt(chart.Series[0].Points.Count-1); 
    } 

chart1.Refresh();

2

Я только что узнал, что SetValueY() не обновляет максимальный интервал по оси Y. Поэтому, если ваш текущий максимум равен 0, он не будет показывать ничего выше 0.

+0

'chart1.ResetAutoValues ​​();' исправит это. –

0

DataTable dtChartDataSource = Вход с вашей стороны.

foreach (DataColumn dc in dtChartDataSource.Columns) 
{ 
    //a series to the chart 
if (chart.Series.FindByName(dc.ColumnName) == null) 
{ 
     series = dc.ColumnName; 
     chart.Series.Add(series); 
     chart.Series[series].ChartType = SeriesChartType.Column; 

    foreach (DataRow dr in dtChartDataSource.Rows) 
    { 
     double dataPoint = 0; 
     double.TryParse(dr[dc.ColumnName].ToString(), out dataPoint); 

     Yourchart.Series[seriesName].Points.AddXY("customStringsOnAxis", dataPoints); 
    } 
} 
} 

Он добавит данные оси x и значения оси Y в таблицу столбцов.

Надеюсь, что это поможет

Смежные вопросы