C# MS图表未同时显示所有系列值(对于相同的X值)

C# MS图表未同时显示所有系列值(对于相同的X值),c#,mschart,C#,Mschart,很抱歉,我在这里找不到一个更合适的标题。我在我的项目中使用MS图表控件从每秒生成4个值的源中绘制实时值。X轴是生成值的时间,Y轴是值本身。我正在为每个变量动态添加一个新系列。所有变量都由用户逐个手动添加,然后为其创建一个系列 基本部分似乎工作正常,但图表在不同时间绘制不同系列的值,即使这些值是在同一时间生成的。下图显示了确切的问题: 如您所见,底部的列表是我正在绘制的值列表。它显示值及其生成时间(hh:mm:ss.ms) 当我绘制这些值(显示在图表区域中)时,我得到的就是这些值。请参阅所有系列

很抱歉,我在这里找不到一个更合适的标题。我在我的项目中使用MS图表控件从每秒生成4个值的源中绘制实时值。X轴是生成值的时间,Y轴是值本身。我正在为每个变量动态添加一个新系列。所有变量都由用户逐个手动添加,然后为其创建一个系列

基本部分似乎工作正常,但图表在不同时间绘制不同系列的值,即使这些值是在同一时间生成的。下图显示了确切的问题:

如您所见,底部的列表是我正在绘制的值列表。它显示值及其生成时间(hh:mm:ss.ms)

当我绘制这些值(显示在图表区域中)时,我得到的就是这些值。请参阅所有系列的最新值(用红色箭头标记)的位置。最新的值在不同的时间,即使它们都是在同一时间生成的。每个系列似乎都有一个单独的X轴。我希望最新的Y值应该以相同的X值绘制,并且应该显示在图表的最右边。更像是显示了最底部的系列。这是创建的第一个系列。每次只有第一次创建的序列工作正常,而接下来的序列由于某种原因而滞后

看起来类似于我的问题,但没有得到回答

这似乎正是我面临的问题,但区别在于——我正在绘制一个实时图形。我不能在添加新数据点以标记某个点是否为空后循环遍历每个序列。这将是一个很大的开销。一些谷歌用户建议对每个系列使用
InsertEmptyPoints()
,以匹配所有X轴。MS Chart示例代码也解释了如何使用此方法,但我不确定在何处/何时使用此方法。如果我在创建系列之后但在添加数据点之前使用它,代码就会崩溃。我试过这样的方法:

_chart.Series.Add(series);
_chart.DataManipulator.InsertEmptyPoints(250, IntervalType.Milliseconds, name);

我做错什么了吗?谢谢你的帮助

我通过添加空点来实现这一点。我在每个系列中都添加了尽可能多的数据点。假设在开始删除最旧的(点[0])数据点之前,我想在每个系列中显示100个数据点,这样我的图表看起来就像是从右向左移动。在这种情况下,我将添加100个空点,同时使用以下方法创建每个系列:

            for (int i = 0; i < 100; i++)
            {
                series.Points.AddXY(i.ToString(), double.NaN);
                series.Points[i].AxisLabel = " ";
            }
            _chart.Series[index].Points.AddXY(time, YValue);                        

           // delete more than max. points. 
           if (_chart.Series[index].Points.Count > MaxTrendPoints - 10) // -10 is adjustment. Got it by trial and error.
                 _chart.Series[index].Points.RemoveAt(0);