2011-08-16 52 views
22

我的條形圖總是與通過默認漸變顏色繪製。我只想要一個簡單的顏色沒有任何風格的效果JFreeChart的條形圖 - > NO梯度

誰能幫助?

代碼:

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 

感謝

+1

粘貼代碼。在大多數情況下,您應該添加一些代碼,使其漸變如下:GradientPaint –

+0

+1爲最新的標題。 Web 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

解決方案的榮譽。 「默認」(我認爲)條形圖有這個非常便宜的外觀。 – rbaleksandar

2

source codeorg.jfree.chart.demo.BarChartDemo1顯示瞭如何設置一系列顏色。只需指定普通的顏色而不是漸變。

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

更正:關鍵@赫蘇斯樂於助人的answer可以在defaultBarPainterBarRenderer初始化被發現。

+0

不起作用,仍然一切都以漸變繪製。不幸的是,我現在還無法上傳圖片:(此外,如果有三列以上的解決方案會發生什麼情況? – shorty

+0

圖片會很好,但是代碼會更好,如果你什麼都不做,你應該得到所規定的顏色的['DefaultDrawingSupplier'](http://www.jfree.org/jfreechart/api/javadoc/org/jfree/chart/plot/DefaultDrawingSupplier.html) – trashgod

+0

@Jupiter瓊斯:感謝您的提醒; – trashgod

6

在創建從ChartFactory的您可以設置圖表主題圖表:

ChartFactory.setChartTheme(StandardChartTheme.createLegacyTheme()); 

默認爲它增加了梯度JFreeTheme。下面的主題可供選擇:

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

這個解決方案幫助我在使用StackedBarChart的情況下不受更改渲染器中barPainter的影響。也許我正在訪問錯誤的渲染器。不過這有幫助。 – Garet