2011-08-16 4 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のリアルタイトル。 Web 2.0さようなら! –

答えて

39

問題は、使用しているBarPainterにあります。 JFreeChartバージョン1.0.13のデフォルトは、GradientBarPainterを使用して、バーにメタリック調を追加します。あなたが "古い"外観を望むなら、解決策はStandardBarPainterを使用することです。

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

これでいいはずです。

また、JFreeChartのBarRendererを使用する場合は、レンダラーを初期化する前にstaticメソッド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 codeは、シリーズの色を設定する方法を示しています。グラデーションの代わりに単純な色を指定するだけです。

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

修正:@への鍵ジェスのanswer役立つがBarRendererdefaultBarPainterの初期化中に見いだすことができます。

+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