2014-02-10 3 views
0

문제에 더 적합한 제목을 찾을 수 없다는 사과드립니다. 내 프로젝트에서 MS Chart 컨트롤을 사용하여 초당 4 개의 값을 생성하는 소스에서 실시간 값을 플롯합니다. X 축은 값이 생성 된 시간이고 Y 축은 값 자체입니다. 각 변수에 대해 새로운 시리즈를 동적으로 추가하고 있습니다. 모든 변수는 사용자가 하나씩 수동으로 추가 한 다음 시리즈가 만들어집니다.MS 차트에 동일한 X 값에 대해 동시에 모든 시리즈 값이 표시되지 않습니다.

값이 동시에 생성 되더라도 차트가 다른 계열의 값을 다른 시간에 플로팅한다는 점을 제외하면 기본 부분이 작동하는 것처럼 보입니다. 이미지에 이어 정확한 문제를 보여줍니다 당신이 볼 수 있듯이, 아래의 목록은 내가하려하고 값 목록이

ms-chart issue

입니다. 그것은 (hh : mm : ss.ms)에서 생성 된 값과 시간을 보여줍니다.

차트 영역에 표시된이 값을 플롯하면 이것이 나옵니다. 모든 시리즈에 대해 최신 값의 위치 (빨간색 화살표로 표시)를 참조하십시오. 최신 값은 모두 동시에 생성되지만 다른 시간에 있습니다. 모든 시리즈에는 별도의 X 축이있는 것으로 보입니다. 나는 최신 Y 값이 동일한 X 값으로 플롯되어야하며 차트의 맨 오른쪽에 표시되어야한다고 생각했습니다. 가장 아래쪽의 시리즈와 마찬가지로 더 많은 시리즈가 표시됩니다. 이것이 바로 처음으로 만들어진 시리즈입니다. 매번 처음에 만들어진 시리즈 만 제대로 작동하고 다음 시리즈는 어떤 이유로 지연됩니다.

Chart, share X axis between different series 내 문제는 비슷하지만 답을 찾을 수 없습니다.

Chart Multiple series different length generate duplicate x axis은 내가 가지고있는 정확한 문제인 것처럼 보입니다.하지만 차이점은 무엇입니까? - 실시간 그래프를 작성하고 있습니다. 포인트가 비어 있는지 여부를 표시하기 위해 새 데이터 포인트를 추가 한 후 모든 시리즈를 반복 할 수 없습니다. 그것은 많은 오버 헤드가 될 것입니다. 일부 인터넷 검색은 모든 X 축과 일치하는 모든 계열에 InsertEmptyPoints()의 사용을 제안했습니다. MS 차트 샘플 코드는 또한이 방법을 사용하여 설명하지만이 방법을 사용할 위치/시간을 잘 모릅니다. 시리즈를 만든 후 데이터 포인트를 추가하기 전에 그것을 사용하면 코드가 충돌합니다. 나는 다음과 같이 시도했다.

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

내가 여기서 뭔가 잘못하고 있니? 어떤 도움을 주셔서 감사합니다.

답변

0

빈 포인트를 추가하여이 작업을 수행했습니다. 나는 모든 시리즈에 가능한 최대 데이터 포인트를 채웠다. 가장 오래된 (Points [0]) 데이터 포인트를 삭제하기 전에 모든 시리즈에서 100 개의 데이터 포인트를 표시하려고한다고 가정하면 차트가 오른쪽에서 왼쪽으로 움직이는 것처럼 보입니다.

  _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); 
: 실제 데이터를 추가하는 동안 단지 그것을 정상적인 방법을,

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

그런 다음 :이 경우 내가 사용하는 모든 시리즈를 만드는 동안 100 빈 포인트를 추가합니다