Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在图表区域c中查找间隔上的最大值和最小值#_C#_Visual Studio_Charts - Fatal编程技术网

C# 在图表区域c中查找间隔上的最大值和最小值#

C# 在图表区域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

我有一张图表。有一个图表区域,我需要在图表上找到最大值和最小值。我怎么做

另外,有一个系列,AxisX有时间[不是数字,请看屏幕截图]

我的问题是我无法获取PointIndex[当然,我可以做到,但是当我没有单击DataPoint,但我只单击图表区域,我无法获取PointIndex,因为它是was-1


给定一个
系列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没有工作。我肯定是我的错误:)我想你的代码工作正常。但我在其他方面解决了我的问题。谢谢你的回答。