获取C#中图形的Y值

本文关键字:图形 获取 | 更新日期: 2023-09-27 18:22:19

在C#中,我如何获得图表序列中一个点的Y值,知道它的X值类型为DateTime?我不知道这个系列的索引,只知道它们的名字。

以下是我的代码。事实上,我做了一个股票价格随时间变化的模拟。现在我想添加"服务日期"系列来标记模拟的特定日期点。我现在需要的是将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"]);
                }
        }
}

获取C#中图形的Y值

您可以使用

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值只需使用返回Y值数组的YValues。我假设你只给每个点分配1个Y值,所以你可以只取第一个索引,即[0]。

所以得到第一个点第一个Y值是:

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