我想使用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()的方法。
答案 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轴值添加到柱形图中。
希望它的帮助