c++ builder XE4, 10.2 Tokyo > TeeChart > 데이터가 계속 추가되는 그래프로 지정된 개수의 데이터만 유지하는 구현

운영 환경
C++ builder XE4
    TeeChart Lite v2013.08.130414
RAD Studio 10.2 Tokyo Update 2 (追記 2018/01/10)
    TeeChart v2016.17.160129 32bit VCL

적절하게 데이터가 추가되는 그래프에 대하여 시간적으로 오래된 데이터를 자동적으로 제거하는 방법을 검토하고 있다.

제거하는 방법


  • 선두로부터 지정의 수를 제거한다
  • 제거하는 처리의 트리거가, 지정된 지정수를 초과했을 때

  • 다음 변수를 설정하는 방법
  • 제거되는 수
  • 제거한 직후 남은 수

  • 이하의 A와 B의 어느 것이 좋은가는, 그 때때로의 상황으로 바뀐다.

    A. 제거한 후의 수를 150으로 하는 생각



    B. 제거되기 직전의 수를 150으로 하는 생각 구현 동작 확인 C++ Builder XE4 Unit1.cpp //------------------------------------------------ --------------------------- #include <vcl.h> #pragma hdrstop #include <DateUtils.hpp> #include "Unit1.h" //------------------------------------------------ --------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //------------------------------------------------ --------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { Chart1->Series[0]->XValues->DateTime = true; Chart1->BottomAxis->DateTimeFormat = L"nn:ss"; TDateTime dt; dt = Now(); double dval; for (int idx=0; idx < 100; idx++) { dval = (double)random(60); Series1->AddXY(dt, dval, L"", clRed); dt = IncSecond(dt, 1); } } //------------------------------------------------ --------------------------- static const int kNumberToKeep = 150; void __fastcall TForm1::B_addClick(TObject *Sender) { TDateTime lastDt = Series1->XValues->Last(); TDateTime workDt = IncSecond(lastDt, 1); double dval; for (int idx=0; idx < 10; idx++) { dval = (double)random(60); Series1->AddXY(workDt, dval, L"", clRed); workDt = IncSecond(workDt, 1); } int removeCnt = Series1->Count() - kNumberToKeep; for (int loop=0; loop < removeCnt; loop++) { Series1->Delete(0); } } //------------------------------------------------ --------------------------- 버튼을 누를 때마다 10데이터씩 추가된다. 150을 넘었을 때 넘은 분만 제거된다(상기의 A의 실장). 이미지 조금씩 플롯이 왼쪽으로 이동하게 되었다.





     

    보충



    그림 작성에 YUML을 사용해 보았다.

    진짜는 상하가 아니고, 좌우의 박스로 하고 싶었지만, 쓰는 방법을 모른다.

    YUML의 서비스가 끝났을 때, 그림이 x마크가 되어, 나중에 보았을 때 무엇이 ​​기재되어 있는지 모르게 될지도. 그러한 걱정을 하는 경우는 이미지 붙이는 것이 좋을 것이다.

    한편 YUML의 좋은 점은 나중에 편집이 가능하다는 것. 이미지 붙여넣기의 경우는 변경할 필요가 나왔을 때에 이미지를 작성한 원데이터를 따르고, 툴을 시작해 수정해, export해 이쪽에 가져온다, 라고 하는 순서를 밟지 않으면 안 된다.

    좋은 웹페이지 즐겨찾기