Reputation: 251
I am using JFreeChart
and would like to display a bar chart of player's scores, with the score on the y-axis and the player's games grouped on the x-axis.
e.g.
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
Because the players do not have to play the same number of games, this results in a lot of blank space when the dataSet is created, as it tries to plot a bar for Player 2 & 3 games 2 & 3.
data.addValue(score, game number, player name);
Output: (the numbers dont quite match, this was just a quick test I knocked up)
Can anybody help me with how to close up this blank space? In theory player 1 could go on to play 100s of games with player 2 and 3 playing only a few, so it would look quite ridiculous! I am new to JFreeChart so there is probably an obvious solution!
Thank you in advance for your help.
Upvotes: 6
Views: 7098
Reputation: 1379
First Look at the Picture carefully
Here is some Explanation w.r.t Numbers.
Here is How you can use the methods in your chart
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);
You can set the value between 0.0 to 1.0 (example 0.1 means 10%)
Hope this Helps
(Update After your comment) Well in this Case you should use Layered Bar Chart
Upvotes: 16