2010-03-13 3 views
1

간단한 히스토그램을 사용하여 들어오는 데이터 스트림이 있습니다. 나는 히스토그램에 사용할 값의 범위 나 적절한 해상도 또는 빈 너비를 모른다.동적으로 JFreeChart로 히스토그램 작성 및 업데이트

SimpleHistogramDataset은이 기능을 제공하지만 새 값이 적용되지 않는 경우 새 받침대를 추가하기 위해 예외 잡기를 처리하고 싶지 않습니다. 또한, 다른 bin 넓이 (아마도 초기 설정 너비의 정수배)를 사용하여 히스토그램을 쉽게 다시 작성할 수는 없습니다.

JFreeChart 또는 다른 차트 라이브러리를 사용하여 쉽게이 작업을 수행 할 수 있습니까? 아니면 여기에 직접 클래스를 작성해야합니까?

+0

히스토그램에 대해서는 모르겠지만 다른 모든 jfreechart 차트에서는'domainAxis.setAutoRange (true)'를 넣을 수 있으며'DatasetChangedEvent'가 발생하면 축이 자동으로 조정됩니다. –

+0

그러면 모든 저장소가 표시됩니다. 날아가는 동안 쓰레기통의 크기를 늘리거나 줄이고 싶습니다. – job

답변

3

고전적인 MVC 시나리오가있는 것 같습니다. 차트가보기이고 컨트롤러가 모델을 기반으로이보기를 다시 작성하는 작업을 조정합니다.

따라서 들어오는 데이터를 반영하도록 모델을 작성해야하며 컨트롤러는 이에 따라 차트를 다시 생성합니다. 결과적으로 컨트롤러는 기존 차트를 수정할 것인지 여부를 결정할 수 있습니다. 또는 은 새로운 요구 사항에 따라 완전히으로 리빌드합니다. 차트 구현 (뷰)은 동적으로 변경되는 데이터 구조 자체를 유지하는 데 적합하지 않습니다.

2

addObservation()을 호출하기 전에 값이 일부 빈에 맞는지 확인해야합니다. 그에 따라 addBin()을 사용하십시오. 차트가 다시 그려지면 빈은 플롯 영역을 채우기 위해 자동으로 크기가 조정됩니다. 이것이 원하는 동작이 아니면 해당하는 XYBarRenderer을 확장 할 수 있습니다. 보관함을 제거해야하는 경우 removeAllBins()을 사용해야합니다. 이로 인해 Brian Agnew'sMVC suggestion이 훨씬 더 적합합니다.

참고로이 example은 XY 시리즈를 동적으로 추가하는 효과를 나타냅니다. 업데이트가 발생하는 방식을 알려줍니다.