2011-08-16 2 views
22

내 막대 그래프는 기본적으로 그라디언트 색상으로 그려집니다. 단순한 색상을 원한다. 스타일이 적용되지 않은.JFreeChart BarChart -> no gradient

아무도 도와 줄 수 있습니까?

코드 :

final JFreeChart chart = ChartFactory.createBarChart(
     "",   // chart title 
     xLabel,    // domain axis label 
     yLabel,     // range axis label 
     dataset,     // data 
     PlotOrientation.VERTICAL, // orientation 
     true,      // include legend 
     false,      // tooltips? 
     false      // URLs? 
    ); 

    final CategoryPlot plot = chart.getCategoryPlot(); 
    // SOMETHING HAS TO BE DONE HERE 

    showChart(chart); // Simply shows the chart in a new window 

감사 org.jfree.chart.demo.BarChartDemo1에 대한

+1

코드를 붙여 넣습니다. 대부분의 경우 다음과 같이 그라디언트를 만들기 위해 코드를 추가해야합니다. GradientPaint –

+0

+1 실제 제목입니다. 웹 2.0 작별 인사! –

답변

39

문제는 BarPainter에 있습니다. JFreeChart 버전 1.0.13의 기본값은 GradientBarPainter을 사용하여 바에 금속성을 추가합니다. "오래된"모양을 원한다면 해결책은 StandardBarPainter을 사용하는 것입니다.

final CategoryPlot plot = chart.getCategoryPlot(); 
((BarRenderer) plot.getRenderer()).setBarPainter(new StandardBarPainter()); 

그렇게해야합니다.

또는 JFreeChart의 BarRenderer을 사용하려는 경우 렌더러를 초기화하기 전에 setDefaultBarPainter() 정적 메서드를 호출하여 StandardBarPainter을 사용하도록 할 수 있습니다.

final CategoryPlot plot = chart.getCategoryPlot(); 
BarRenderer.setDefaultBarPainter(new StandardBarPainter()); 
((BarRenderer) plot.getRenderer()).setBarPainter(new BarPainter()); 

당신이 항상 ChartFactory을 사용하는 최대 대신 지상에서를 구축 할 수 있습니다 차트의 더 제어하려면,하지만 많은 추가 코드를 필요로한다.

+2

+1 문제의이 부분을 완전히 간과했습니다. :-) – trashgod

+1

좋아요! 나는 오랫동안 해결책을 찾고있었습니다! –

+0

해결책을 나타내는 명성. "default"(나는 생각한다) 막 대형 차트는이 아주 싼 모양을 가지고있다. – rbaleksandar

2

source code는 일련의 색상을 설정하는 방법을 보여줍니다. 그래디언트 대신 일반 색상 만 지정하면됩니다.

renderer.setSeriesPaint(0, Color.red); 
renderer.setSeriesPaint(1, Color.green); 
renderer.setSeriesPaint(2, Color.blue); 

수정 : @의 핵심 제스의 answer 도움이 BarRenderer에서 defaultBarPainter의 초기화에서 찾을 수있다.

+0

그래도 모든 것이 그라디언트로 그려집니다. 불행히도 아직 이미지를 업로드 할 수 없습니다 : (더 나아가 3 개 이상의 열이있는 경우 상위 솔루션에서 무엇이 발생합니까?) – shorty

+0

이미지는 좋지만 코드는 더 좋을 것입니다. ['DefaultDrawingSupplier'] (http://www.jfree.org/jfreechart/api/javadoc/org/jfree/chart/plot/DefaultDrawingSupplier.html)에서 지정한 색상 – trashgod

+0

@Jupiter Jones : 알림을 보내 주셔서 감사합니다. 업데이트 됨. – trashgod

6

당신이 차트 테마를 설정할 수 있습니다 ChartFactory에서 차트 생성하기 전에 :

ChartFactory.setChartTheme(StandardChartTheme.createLegacyTheme()); 

기본값은 그라데이션을 추가 JFreeTheme입니다. 다음 테마를 사용할 수 있습니다.

ChartFactory.setChartTheme(StandardChartTheme.createJFreeTheme()); 
ChartFactory.setChartTheme(StandardChartTheme.createDarknessTheme()); 
+0

이 솔루션은 렌더러에서 barPainter를 변경해도 영향을받지 않는 StackedBarChart를 사용할 때 도움이되었습니다. 아마도 잘못된 렌더러에 액세스하고 있었을 것입니다. 그럼에도 불구하고 이것은 도움이됩니다. – Garet