aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/scalam/plotting/DataSet.scala
blob: 70e998d295b1479d342603085ff39a8fd4e70960 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package scalam.plotting

import scalam.m.ast.Identifier
import scalax.file.Path
import breeze.linalg.{ Vector, DenseVector }
import scalam.io._
import scala.language.implicitConversions

case class DataSet(points: Seq[(Double, Double)], label: String, name: String) {

  lazy val (xs, ys) = points.unzip

}

object DataSet {

  def apply(points: Seq[(Double, Double)], label: String) = new DataSet(points, label, Identifier.makeValid(label))
  
  def apply(xs: Seq[Double], ys: Seq[Double], label: String) = new DataSet(xs zip ys, label, Identifier.makeValid(label))
  
  def apply(xs: Seq[Double], ys: Seq[Double], label: String, name: String) = new DataSet(xs zip ys, label, name)

  implicit def dataSetIsSaveable(ds: DataSet) = new Saveable {
    def save(out: scalax.file.Path) = {
      val data = ds.points.map{case (x, y) => x + " " + y}.mkString("\n")
      out.write(data)
    }
  }

}