6

我正在使用JFreeChart并且想要显示玩家得分的条形图,分数在 y 轴上,玩家的游戏分组在 x 轴上。

例如

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);

输出:(数字不太匹配,这只是我敲出的一个快速测试) 注意玩家 1 游戏 3 和玩家 3 游戏 1 和 2 中的空白区域

任何人都可以帮助我如何关闭这个空白空间吗?理论上,玩家 1 可以继续玩 100 场游戏,而玩家 2 和 3 只玩了几局,所以这看起来很荒谬!我是 JFreeChart 的新手,所以可能有一个明显的解决方案!

预先感谢您的帮助。

4

1 回答 1

16

首先仔细看图 在此处输入图像描述

这是一些解释wrt数字。

  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%)

希望这可以帮助

(在您发表评论后更新)在这种情况下,您应该使用分层条形图

在此处输入图像描述

于 2013-05-24T15:47:38.283 回答