1
我遇到了Scala-chart,这是一个在Scala中使用jFreeChart的非常好的包装。它有几个实用程序类,用于以最小的努力生成图表。如何使用Scala图表创建多系列(行)图表
什么是最好的方式来生成多个系列使用斯卡拉图的折线图?
我遇到了Scala-chart,这是一个在Scala中使用jFreeChart的非常好的包装。它有几个实用程序类,用于以最小的努力生成图表。如何使用Scala图表创建多系列(行)图表
什么是最好的方式来生成多个系列使用斯卡拉图的折线图?
在scala-chart
有几种不同的方法来创建多系列折线图。哪种方式来使用取决于你如何创建数据集(包括如何与传统的JFreeChart代码工作):
(比较)创建单系列折线图:
val series = for (x <- 1 to 5) yield (x,x*x)
val chart = XYLineChart(series)
构建达完全由Scala集合了多系列折线图(这样,我建议,因为它是最惯用语):
val names: List[String] = "Series A" :: "Series B" :: Nil
val data = for {
name <- names
series = for (x <- 1 to 5) yield (x,util.Random.nextInt(5))
} yield name -> series
val chart = XYLineChart(data)
从集合对象:
val names: List[String] = "Series A" :: "Series B" :: Nil
def randomSeries(name: String): XYSeries =
List.tabulate(5)(x => (x,util.Random.nextInt(5))).toXYSeries(name)
val data = for (name <- names) yield randomSeries(name)
val chart = XYLineChart(data)
明确创建一个XYSeriesCollection
对象:
def data: XYSeriesCollection = ???
val chart = XYLineChart(data)
这些都是一些简单的代码片段,但应说明数据创建如何是可能的,大多数时候它归结为其中一种方法。
当前实现(如0.4.0的),在这样的工作:
A
类型和data
对象接受隐含 - - 类型ToXYDataset[A]
- 将的任意转换为工厂基于的相应数据集XYSeries
,XYSeriesCollection
,Coll[XYSeries]
(其中科尔是Scala的标准库集合),Coll[(A,B)]
和Coll[(A,Coll[(B,C)])]
这样的图表工厂是完全可扩展的,可与您的自定义类型的data
情况下使用 - - 您只需为自定义类型编写自己的转换类型类实例。
实际上,它支持单系列折线图和多系列折线图(请参阅我的答案) - 图表工厂甚至不区分它们。 –