折线图图形警报

Line Chart Graphical Alert

目前我的 C# 程序中有一个折线图,并且有一个最小和最大变量。如果任何图形超过最大值或低于最小值,是否有任何内置方式在图形上显示(例如点处的点)已超过限制,并显示 x/y 值就那一点?

int max = 2000;
int min = 2000;

for (int i = 0; i < dgvLoadedValues.RowCount - 1; i++)
{
   DateTime x = Convert.ToDateTime(dgvLoadedValues.Rows[i].Cells[0].Value.ToString());

   try
   {
      float y = float.Parse(dgvLoadedValues.Rows[i].Cells[e.ColumnIndex].Value.ToString());
      chart1.Series["Series1"].Points.AddXY(x, y);
   }
   catch
   {
      Console.WriteLine("Unable to plot point");
   }
}

上面的代码简单地显示了从数据网格视图中获取的值并将其显示到折线图中

谢谢

不幸的是,似乎没有办法定义这样的自动警报。

但如您所知,在添加或绑定 DataPoints 时,您可以在必要时设置 Marker

这是一个事后一次性完成的循环,但当然您也可以在添加点时设置标记..:[=​​18=]

foreach (DataPoint dp in chart1.Series[0].Points)
{
    if (dp.YValues[0] < max && dp.YValues[0] > min ) continue;
    dp.MarkerStyle = MarkerStyle.Circle;
    dp.MarkerColor = Color.Red;
}

或者您的情况:

try
{
   float y = float.Parse(dgvLoadedValues.Rows[i].Cells[e.ColumnIndex].Value.ToString());
   int i = chart1.Series["Series1"].Points.AddXY(x, y);
   if (y < min || y > max)
   {
      chart1.Series["Series1"].Points[i].MarkerStyle = MarkerStyle.Circle;
      chart1.Series["Series1"].Points[i].MarkerColor = Color.Red;
   }       
}

要清除标记,您可以设置其 MarkerStyle = MarkerStyle.None

当然你可以很容易地给最小点和最大点不同的颜色..

这里是一个简单的圆圈样式的例子,但是还有其他的包括图片..:[=​​18=]

要在标签中添加值,请使用 format,如下所示:

dp.Label = "(#VALX{0.0} / #VAL{0.0})" ;