在C#中,如何知道图表系列中某个点的Y值(知道其DateTime类型的X值)?我不知道该系列的索引,只知道它们的名字。

以下是我的代码。实际上,我模拟了一段时间内的股价。现在,我想添加“服务日期”系列以标记模拟的特定日期点。我现在需要将colpos设置为名称由colinfo.colptf给出的系列的Y值

还是您可以告诉我如何获取chart1.series[colinfo.colptf]的索引?

private void radioButton1_CheckedChanged(object sender, EventArgs e)
{
        if (radioButton1.Checked == true)
        {
            radioButton2.Checked = false;
            radioButton3.Checked = false;
            radioButton4.Checked = false;
            clearseries(chart1, "Service dates");
            chart1.Series.Add("Service dates");
            chart1.Series["Service dates"].Color = Color.Red;
            chart1.Series["Service dates"].ChartType = SeriesChartType.Point;
            foreach (var simul in simulations)
                foreach (var colinfo in simul.VPdates)
                {
                    double colpos = chart1.Series[colinfo.colptf].Points.First(x => x.XValue == colinfo.coldate.ToOADate()).YValues[0];
                    addpoint(colinfo.coldate, colpos, colinfo.colstring, chart1.Series["Service dates"]);
                }
        }
}

最佳答案

你可以用

var collection = chart1.Series.Select(series => series.Points.Where(point => point.XValue == 0).ToList()).ToList();


这将为您提供一系列列表,其中所有点均位于指定的X坐标处。

如果要将所有数据点都放在1个列表中,现在可以使用

List<DataPoint> points = new List<DataPoint>();
collection.ForEach(series => series.ForEach(points.Add));


从DataPoint获取Y值仅是使用YValues,它返回一个Y值数组。我假设您只为每个点分配1个Y值,所以您可以采用第一个索引[0]。

因此,获得第一个点的第一个Y值将是:

double yVal = points[0].YValues[0];

关于c# - 在C#中获取图形的Y值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33778487/

10-12 06:54