我目前在C#程序中有一个折线图,我有一个min和max变量。如果任何图形超过最大值,或低于最小值,是否有任何内置的方式在图形上显示(例如点上的点)限制通过,并显示该值的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");
}
}
上面的代码只显示从datagridview获取的值并将其显示为折线图
谢谢
答案 0 :(得分:1)
不幸的是,似乎没有办法定义这样的自动警报。
但正如您所知,只要添加或绑定了DataPoints
,您就可以在必要时设置Marker
。
这是一个循环,它可以一次性完成它,但当然你也可以在添加点时设置标记..:
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
。
当然你可以很容易地给出最小和最大点不同的颜色..
以下是简单圆圈样式的示例,但还有其他一些包括图片..:
要在标签中添加值,请使用format,如下所示:
dp.Label = "(#VALX{0.0} / #VAL{0.0})" ;