2009-07-20 1 views
2

공통 시간 도메인 축이있는 4 개의 timeseries 차트로 구성된 JFreechart의 결합 된 플롯이 있습니다.JFreechart 실시간 혼합 플롯 - 데이터 포인트가 수신되지 않은 경우 단계 하위 차트의 이전 값 렌더링

하위 플롯의 데이터는 다른 속도로 도착합니다. 예를 들어 매 2 밀리 초마다 가격 변경 이벤트가 발생하고 1 분마다 위치가 변경 될 수 있습니다. 현재 XYStepRenderer를 사용하여이 시리즈를 렌더링하여 단계 차트를 생성합니다.

나는 이런 식으로 뭔가를 할 수 있도록하고 싶습니다 :

A 가격 포인트는 시간 T에서 수신되고 데이터가 위치에 대한 시간 t에서 수신되지 않은 차트
  • 에 그려집니다
    • 차트와 같이 값이 변경되지 않고 이전 위치 값이 렌더링되었다고 가정합니다. 즉, 스텝 라인을 수평으로 연장하는 것으로 가정합니다.
    • 시간 T + 1에서 스텝 포인트를 변경하여 위치 점을 플롯합니다.
    • T + 1 가격 포인트가 수신되지 않았으므로 p 후불 가격이 플롯됩니다.

    JFreechart에서 이것을 수행하는 쉬운 방법이 있습니까? 현재 작동하는 구현이 있지만 이것은 가정 된 값을 렌더링하는 것을 처리하지 않습니다.

    데이터 모델을 바꿔서 이전 값을 빠르게 찾을 수 있고 모든 플롯에 대해 이벤트가 수신 될 때 각 서브 플로트에 그리기 호출을 변경하도록 초기 생각을 들었습니다.

  • 답변

    3

    당신은 들어오는 변경 사항을 버퍼링하고 JFreeChart에 대한 포워딩 변경 사항에 대한 룰 세트를 적용해야한다고 생각합니다. (이는 실시간 작업 btw에는 권장하지 않지만, 저주파수 업데이트의 경우 작동합니다.) 잘).

    가격 및 해당 데이터 세트에 대한 데이터 세트가있는 것 같습니다. 위치 및 가격 업데이트가 타임 스탬프와 함께 제공됩니까? 그렇지 않다면, 이들을 순차적으로 수신하여 묶어 버리려고하는 문제가있을 것입니다 (아마도 특정 시간대에 도착한 업데이트가 같은 시간대에 도착했을 것입니다). 그들은 타임 스탬프를 가지고 있다면, 가격이 오면 새로운 위치 (이전 위치와 같음)를 도출 할 수 있고, 필요하다면 그 위치를 바꿀 수 있습니다.

    위치/가격 변경으로 인해 휩쓸 리게 될 경우를 대비하여 위치/가격 업데이트와 차트를 분리 할 것입니다. 이를 즉시 버려야 할 여러 차트 업데이트로 변환하지 않으려 고합니다.

    +0

    제안 해 주셔서 감사합니다. Brian. 타임 스탬프를 받고 있으므로 차트의 업데이트를 직접 제어 할 수 있습니다. 제가 피하고 싶었던 것은 실제로 새로운 데이터를받지 못했을 때 차트에 포인트 (즉, 마커)를 그렸습니다. 빠른 싸구려 해킹으로, 데이터 셋의 마지막 포인트에 대한 확장 된 선을 그리기 위해 XYStepLine 렌더링 클래스를 서브 클래 싱했습니다. 시리즈에 새로운 포인트가 도착하면이 라인이 수정됩니다. 이전 데이터를 재생할 수 있도록 차트 데이터 캐시 유형을 만드는 데 관심이 많으며 제안 사항을이 서비스에 통합 할 가능성이 높습니다. – pjp

    +0

    우수. 다행 이구나. –

    관련 문제