MSDN图表实时更改点值?

时间:2014-02-20 13:25:43

标签: c# winforms charts msdn

我想使用MSDN图表来表示我从telnet应用程序获取的实时数据。出于测试目的,我添加了一个按钮来手动更改图表。我手动制作了图表,它在X轴上有0到5个点,X上的值不同。该系列由它的默认名称“Series1”命名。

我尝试了以下内容:

  

chart1.Series [ “系列1”] Points.ElementAt(0).SetValueY(40)。 //什么都没发生

     

chart1.Series [“Series1”]。Points.ElementAt(1).SetValueXY(1,20); //什么都没发生

     

chart1.Series [ “系列1”]点[0] .SetValueY(40)。 //什么都没发生

     

chart1.Series [“Series1”]。Points.ElementAt(1).YValues.SetValue(10,0); //什么都没发生

     

chart1.Series [ “系列1”] Points.Clear(); //删除所有应该的点。

那么如何在运行时更改数据点条目?

CNC中 如果我使用chart1.Series["Series1"].Points.ElementAt(0).SetValueY(40);修改某个点并在此之后使用chart1.Series["Series1"].Points.AddXY(1, 40);添加一个点,则修改后的点会捕捉到其修改后的位置。结论是修改确实会改变点Y值,但图形不会刷新。 AddXY()函数似乎是autorefresh。我似乎找不到手动调用Refresh()的方法。

4 个答案:

答案 0 :(得分:8)

更改值后调用chart1.Refresh();它将强制重绘图表,获取新值。

答案 1 :(得分:2)

我刚刚发现SetValueY()不会更新Y轴的最大间隔。因此,如果您当前的最大值为0,则不会显示任何高于0的值。

答案 2 :(得分: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();

答案 3 :(得分: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轴值添加到柱形图中。

希望它的帮助