我正在处理包含4个序列的图表:x轴是日期,y轴的刻度范围是-10到10。每个数据点(无论序列如何)都位于不同的日期,尽管序列确实表示不同的日期测量。

我创建了一个从SQL查询中填充的图表,并获得一条垂直线与光标一起水平移动。接下来,我想做的是(但已经很笨拙)将垂直线的位置与数据点(不管是哪个系列)进行比较,并在视觉上突出显示该点(并提取x / y值以进行向下挖掘)图表信息)。

我对如何逐步处理不同的系列有一些想法,但是我没有得到如何在滚动垂直线周围创建日期时间窗口(约半天)的方法-如何将垂直线与时间序列中的数据点。也许我只是没有正确考虑问题?

这是我的鼠标移动代码,但是对于有问题的部分,我没有任何作用:

private void calCheckChart_MouseMove(object sender, MouseEventArgs e) {
    // Set style of cursor over chart, including dotted vertical line

    calCheckChart.ChartAreas[0].CursorX.IsUserEnabled = true;
    calCheckChart.ChartAreas[0].CursorX.Interval = 0;
    calCheckChart.ChartAreas[0].CursorX.LineColor = Color.Black;
    calCheckChart.ChartAreas[0].CursorX.LineWidth = 1;
    calCheckChart.ChartAreas[0].CursorX.LineDashStyle = ChartDashStyle.Dot;

    // Move the vertical line with cursor
    Point cursorDate = new Point(e.X);
    calCheckChart.ChartAreas[0].CursorX.SetCursorPixelPosition(cursorDate, true);

    // ...
}


感谢您抽出宝贵的时间查看此内容。任何见解都将不胜感激。

最佳答案

我想到了!从我在前面的代码中停下来的地方,我首先确定了我的CursorX位置值正在输出的是OADate。知道这一点后,我为每个系列构建了一个foreach语句(如下所述):首先初始化数据点的可视属性(pt),然后检查数据点是否落在以0.9为中心的0.9天间隔内光标(CursorX-0.4
因此,这会在系列之间跳转到落入所选范围内的任何数据点,如果它们应该在同一日期,则还会在多个系列中选择多个数据点。

          // Scan through series and find the nearest datapoint within a given time interval
            foreach (DataPoint pt in calCheckChart.Series[0].Points)
            {
                // Initialize point attributes.
                pt.MarkerStyle = MarkerStyle.None;
                // Check if the cursor's x-value is the near a point in series, and if so highlight it
                if (pt.XValue > calCheckChart.ChartAreas[0].CursorX.Position - 0.4 && pt.XValue < calCheckChart.ChartAreas[0].CursorX.Position + 0.5)
                {
                    pt.MarkerStyle = MarkerStyle.Circle;
                    pt.MarkerSize = 8;
                    // toolStripStatusLabel1.Text = pt.YValues[0].ToString();
                }
            }

 // ...

关于c# - 根据日期时间间隔(半天之内)在图表上突出显示数据点C#-Visual Studio 2008,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18219758/

10-09 07:47