C# 在图表区域c中查找间隔上的最大值和最小值#
我有一张图表。有一个图表区域,我需要在图表上找到最大值和最小值。我怎么做 另外,有一个系列,AxisX有时间[不是数字,请看屏幕截图] 我的问题是我无法获取PointIndex[当然,我可以做到,但是当我没有单击DataPoint,但我只单击图表区域,我无法获取PointIndex,因为它是was-1C# 在图表区域c中查找间隔上的最大值和最小值#,c#,visual-studio,charts,C#,Visual Studio,Charts,我有一张图表。有一个图表区域,我需要在图表上找到最大值和最小值。我怎么做 另外,有一个系列,AxisX有时间[不是数字,请看屏幕截图] 我的问题是我无法获取PointIndex[当然,我可以做到,但是当我没有单击DataPoint,但我只单击图表区域,我无法获取PointIndex,因为它是was-1 给定一个系列s,您可以找到最小和最大值,如下所示: double minX = s.Points.Select(v => v.XValue).Min(); double maxX = s.P
给定一个
系列s
,您可以找到最小和最大值,如下所示:
double minX = s.Points.Select(v => v.XValue).Min();
double maxX = s.Points.Select(v => v.XValue).Max();
double minY = s.Points.Select(v => v.YValues[0]).Min();
double maxY = s.Points.Select(v => v.YValues[0]).Max();
Color c = Color.Green;
minXpt.MarkerColor = c;
minYpt.MarkerColor = c;
maxXpt.MarkerColor = c;
maxYpt.MarkerColor = c;
minXpt.MarkerSize = 12;
minYpt.MarkerSize = 12;
maxXpt.MarkerSize = 12;
maxYpt.MarkerSize = 12;
请注意,它们不会直接映射到点,因为每个值可能出现多次。因此,要找到第一个和最后一个匹配的数据点
,我们可以使用以下方法:
// find datapoints from left..
DataPoint minXpt = s.Points.Select(p => p)
.Where(p => p.XValue == minX)
.DefaultIfEmpty(s.Points.First()).First();
DataPoint minYpt = s.Points.Select(p => p)
.Where(p => p.YValues[0] == minY)
.DefaultIfEmpty(s.Points.First()).First();
//..or from right
DataPoint maxXpt = s.Points.Select(p => p)
.Where(p => p.XValue == maxX)
.DefaultIfEmpty(s.Points.Last()).Last();
DataPoint maxYpt = s.Points.Select(p => p)
.Where(p => p.YValues[0] == maxY)
.DefaultIfEmpty(s.Points.Last()).Last();
现在在标记找到的点之后,可能如下所示:
double minX = s.Points.Select(v => v.XValue).Min();
double maxX = s.Points.Select(v => v.XValue).Max();
double minY = s.Points.Select(v => v.YValues[0]).Min();
double maxY = s.Points.Select(v => v.YValues[0]).Max();
Color c = Color.Green;
minXpt.MarkerColor = c;
minYpt.MarkerColor = c;
maxXpt.MarkerColor = c;
maxYpt.MarkerColor = c;
minXpt.MarkerSize = 12;
minYpt.MarkerSize = 12;
maxXpt.MarkerSize = 12;
maxYpt.MarkerSize = 12;
我得到这个结果:
查看如何将搜索限制为缩放间隔!可能您不明白我想要什么,或者我没有尽可能好地询问。double minX=s.Points.Select(v=>v.XValue).Min()
你写的。但它只找到完整序列的最小值。当我选择我的间隔时,最小值不会改变。实际上我可以说出我需要什么。当我选择间隔时,我得到第一个点X和第二个点X,然后我使用缩放(第一,第二)
。我需要一个功能。当我选择我的时间间隔时,我需要在时间间隔上找到max Y和min Y,然后我需要设置AxisY.max=maxY
。这是我的任务,但我不明白怎么做。我希望你能理解我的英语:)你注意到答案底部的链接了吗?是的,当然。我看到了,我看到了我试过了。但我的ChartArea没有工作。我肯定是我的错误:)我想你的代码工作正常。但我在其他方面解决了我的问题。谢谢你的回答。