2013-05-23 23 views
5

私はJFreeChartを使用していますが、y軸のスコアとx軸にグループ化されたプレーヤーのゲームのスコアを棒グラフで表示したいと考えています。JFreeChart棒グラフの空白を埋める

String[] {Player name, score, game number} 
Player 1, 10 , 1 
Player 1, 12 , 2 
Player 1, 15 , 3 
Player 2, 11 , 1 
Player 3, 18 , 1 

プレイヤーがゲームの同じ数、データセットが作成されたとき、それはプレーヤーのためのバーをプロットしようとすると、これは、空白の多く、その結果を再生する必要はありませんので2 & 3試合2 & 3.

data.addValue(score, game number, player name); 

出力:(数字はかなり一致していけない、これは私がノックだけで、簡単なテストだった) Note the blank space in player 1 game 3 and player 3 games 1 and 2

誰がこのBLANをクローズアップする方法で私を助けることができますk空間?理論的には、プレイヤー1はプレイヤー2とプレイヤー3がわずかしかプレイしていないので、100sのゲームをプレイすることができます。 私はJFreeChartを新しくしているので、おそらく明白な解決策があります!

ご協力いただきありがとうございます。ここで絵を

+0

あなたは感謝しますが、あなたのリンクを見てから、それを積み重ねグラフと思われ積み重ねられたグラフ http://www.java2s.com/Code/Java/Chart/JFreeChartStackedBarChartDemo1.htm –

+0

にそれを変更する必要があります可能であれば各ゲームを並べて表示することを好みますが、すべてのゲームで得点の合計数を表示するのに適しています。 – ms813

+0

これが役立つかどうかわかりませんが、私のコードの中には、表示を防ぐために値をnullに設定するのではなく、値を含めないでください。折れ線グラフの場合、その間のデータが –

答えて

13

初見慎重 enter image description here

は数字w.r.tいくつかの説明です。

  1. setLowerMargin(ダブルマージン)。
  2. setUpperMargin(ダブルマージン)。
  3. setCategoryMargin(ダブルマージン)。
  4. setItemMargin(ダブルマージン)。ここで

あなたがチャートに

CategoryPlot p = chart.getCategoryPlot(); 

CategoryAxis axis = p.getDomainAxis(); 
axis.setLowerMargin(0.1); 
axis.setUpperMargin(0.1); 
axis.setCategoryMargin(0.1); 
BarRenderer renderer = (BarRenderer) p.getRenderer(); 
renderer.setItemMargin(0.1); 

をメソッドを使用することができますどのようにあなたが0.0から1.0の間の値を設定することができている(例えば、0.1が10%を意味する)

希望これは

を支援

(あなたのコメントの後に更新) この場合、あなたは使用する必要がありますレイヤードバーチャート

enter image description here

+0

ありがとう、これは一般的なJFreeChartの使用に役立ちます。しかし、それは私の特定の問題を解決しません。あなたの例では、ゲームプレイヤー0,1と2はすべてそれぞれ3つのゲームをプレイしています。私のシステムでは、プレイヤーがゲームの同じ量をプレイする必要はありませんので、 – ms813

+0

おかげで再び列の一部のためのデータが、I'lは今のところこれを実装しないがあるということを、余白のケースではありません。グループ化された3次元バーを実際に使ってみたいと思いますが、もっとよく見え、わかりやすいと思います。 – ms813

+0

@ネオ私の質問をチェックしてもらえますか? http://stackoverflow.com/questions/28690094/how-to-remove-top-white-space-from-pdf – VVB

関連する問題