2012-06-06 2 views
3

JFreeChart를 사용하여 StackedBarChart를 생성하고 있습니다. 입력 데이터에 따라 많은 범주 (일반적으로 20-40 사이)를 가질 수있어 레이블이 겹치는 경우가 있습니다. 는 다음 스크린 샷에서는 1 38에서 범주 차트를 볼 수 있습니다중복을 피하기 위해 JFreeChart의 일부 카테고리 라벨을 숨기기

chart with categories from 1 to 38, overlapping labels

내가 참조로 분류 라벨의 일부를 보여주고 싶습니다, 전부는 아니지만. 첫 번째와 마지막, 그리고 다섯 번째 간격을 보여주기에는 완벽 할 것입니다. 이것이 가능합니까?

차트의 너비를 변경할 수없고 레이블을 작게하면 너무 작아 더 이상 읽을 수없는 경우에만 작동합니다 ... 마지막 범주는 전체 범주 축 ...

의견을 보내 주셔서 감사합니다.

답변

3

하나의 간단한 솔루션은 범주 lables를 backround 색 (이 경우 흰색)으로 설정하는 것입니다.

CategoryPlot plot = (CategoryPlot) chart.getPlot(); 
    CategoryAxis domainAxis = plot.getDomainAxis(); 
    domainAxis.setTickLabelPaint("Category 2", Color.white); 
    domainAxis.setTickLabelPaint("Category 4", Color.white); 

나는 또한 시도 그래이

enter image description here

+0

아마도 가장 좋은 해결책은 아니지만 작동하지만 더 나은 것을 찾지 못했습니다. (_new Color (0,0,0,0) _) – moeTi

+0

@moeTi 동의 함, 가장 좋은 해결책은 아닙니다. - 또 다른 해결책은 getTickLabelPaint를 오버라이드하는 것입니다.하지만 여전히 카테고리 라벨을 사용해야하므로 사용 가능한 공간에 기반한 결정. – GrahamA

2

example과 같이 도메인 축에서 setVerticalTickLabels(true)을 사용할 수 있습니다.

부록 : 죄송합니다. exampleValueAxis입니다. StackedBarChart에 사용 된 CategoryAxis의 경우 setCategoryLabelPositions() 메서드를 사용하면 유연성이 향상됩니다. 일반적인 사용법은 BarChartDemo1 소스에 나와 있으며 here으로 표시됩니다.

+1

같은 차트를 생성합니다,하지만 너무 많은 종류가 있기 때문에 여전히 좋아 보이지 않습니다. 라벨이 이미 좁아서 (1-2 자리), 위 또는 아래로 돌리면 실제로 아무 것도 바뀌지 않습니다. – moeTi

관련 문제