web-dev-qa-db-ja.com

Jfreechartのバーの幅

棒グラフの棒の幅を調整する方法はありますか?

次のコードでチャートを作成します。

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

バーの最大幅を設定することもできます。これは、幅の広いグラフがあるが、データポイントが1つまたは2つしかなく、1つの大きな太いバーが領域全体を占めることを望まない場合に便利です。

CategoryPlot categoryPlot = chart.getCategoryPlot();
BarRenderer br = (BarRenderer) categoryPlot.getRenderer();
br.setMaximumBarWidth(.35); // set maximum width to 35% of chart
23
Jason Messick

バーの幅を直接指定することはできませんが、幅に影響を与える変更可能な属性がいくつかあります。 lowerMarginupperMarginおよび-を確認する必要があります。 categoryMargin CategoryAxisによって定義された属性またはitemMargin BarRendererの属性。

例えば:

_    BarRenderer renderer = (BarRenderer) chart.getCategoryPlot().getRenderer();
    renderer.setItemMargin(.1);
_

setItemMargin(double percent)で指定されたdoubleは、同じカテゴリ内のバー間のスペースに使用されるカテゴリ軸の全長のパーセンテージです(デフォルトは.2または20%)。この値が小さいほど、バーは大きくなります。

9
Hermann Hans

正のマージンとゼロを使用しても結果が得られなかった後、itemMarginに負の数を使用して、何が起こるかを確認しました。バーが太くなり始めました。ただし、十分なスペースがないとオーバーラップするため、これが推奨されるかどうかはわかりません。

BarRenderer renderer = (BarRenderer) chart.getCategoryPlot().getRenderer();
renderer.setItemMargin(-2);
6
sjs1984

Dave Gilbert(JFreeChartプロジェクトリーダー)によると

バーの幅は自動的に計算され、グラフまたはプロットの幅とデータセット内のアイテムの数によって異なります。

ディスカッションを参照してください ここ

5
nandokakimoto