2

我需要在 Scala 中创建一个直方图,并且我需要在一个图表中创建两个系列,这些系列被分配到 5 个箱中。我找到了一个库scala-chart,它是jFreeChart的包装器。我可以创建一个直方图数据集,添加两个系列并制作一个图表,如下所示:

  val data:HistogramDataset = new HistogramDataset
  data.addSeries("Class 0",class0,5)
  data.addSeries("Class 1",class1,5)

  val chart = ChartFactories.XYBarChart(class1data)

然而,这两个栏只是重叠,所以我看不到太多信息。有一个 jFreeChart 类似乎能够完成这项工作:ClusteredXYBarRenderer,但我如何使用它来绘制我的图表?


作为一个额外的问题,是否有办法让它以百分比显示不同的分布,而不是简单地将它们显示为每个 bin 中有多少个值的数量?

理想情况下,我正在寻找这样的最终产品:在此处输入图像描述

4

1 回答 1

2

你看看这个例子。它使用DefaultCategoryDataset, 其中类别 = 垃圾箱。您可以将 scala-charttoCategoryDataset用于Tuple3with (count, series, bin)。但是正确排序数据有点复杂。我发现在很多情况下,使用默认的 Java API 而不是to...scala-chart 的方法来构建数据集确实更容易。

import scalax.chart._

val ds = new org.jfree.data.category.DefaultCategoryDataset
ds.addValue(5, "Class A", "Bin 1")
ds.addValue(7, "Class A", "Bin 2")
ds.addValue(8, "Class B", "Bin 1")
ds.addValue(3, "Class B", "Bin 2")

val chart = ChartFactories.BarChart(ds)
chart.show()

在此处输入图像描述

要使用百分比,最简单的方法是提供已转换为百分比的值。否则,您将需要更改轴刻度标签渲染器。

于 2013-10-19T17:17:36.760 回答