【问题标题】:Closing up blank space in JFreeChart bar chart关闭 JFreeChart 条形图中的空白区域
【发布时间】:2013-05-19 11:58:07
【问题描述】:

我正在使用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 可以继续玩 100 场游戏,而玩家 2 和 3 只玩了几场,所以这看起来很荒谬! 我是 JFreeChart 的新手,所以可能有一个明显的解决方案!

提前感谢您的帮助。

【问题讨论】:

  • 谢谢,但是从查看您的链接来看,堆叠图似乎更适合显示所有游戏的总得分,而我希望尽可能并排显示每场游戏.
  • 不知道这是否有帮助,但在我的一些代码中,为了防止显示,我将值设置为 null,而不是不包括它们。如果是折线图,则如果两者之间的数据丢失,则不允许连接两个点
  • @user2310289,感谢您的评论。我尝试将空槽手动设置为空,但不幸的是空间没有关闭!
  • @ms813 你能检查我的问题吗? stackoverflow.com/questions/28690094/…

标签: java jfreechart bar-chart


【解决方案1】:

先仔细看图

这里有一些解释 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%)

希望对你有帮助

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

【讨论】:

  • 谢谢,这对使用 JFreeChart 很有帮助。但是它并不能解决我的具体问题。在您的示例中,玩家 0,1 和 2 都玩了 3 场比赛。在我的系统中,玩家不必玩相同数量的游戏,因此不是边缘情况,而是某些列没有数据
  • 再次感谢,我现在就实现这个。我真的很想使用分组的 3d 条,因为我认为它们看起来更好并且更容易理解。
猜你喜欢
  • 1970-01-01
  • 2021-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-14
  • 2022-11-25
  • 1970-01-01
相关资源
最近更新 更多