diff options
Diffstat (limited to 'src/main')
-rw-r--r-- | src/main/scala/scalam/plotting/Axis.scala | 5 | ||||
-rw-r--r-- | src/main/scala/scalam/plotting/Plot.scala | 16 | ||||
-rw-r--r-- | src/main/scala/scalam/plotting/Plotter.scala | 6 | ||||
-rw-r--r-- | src/main/scala/scalam/plotting/scale/scales.scala | 7 |
4 files changed, 26 insertions, 8 deletions
diff --git a/src/main/scala/scalam/plotting/Axis.scala b/src/main/scala/scalam/plotting/Axis.scala new file mode 100644 index 0000000..400e2bb --- /dev/null +++ b/src/main/scala/scalam/plotting/Axis.scala @@ -0,0 +1,5 @@ +package scalam.plotting + +import scale._ + +case class Axis(label: String, scale: Scale = Lin)
\ No newline at end of file diff --git a/src/main/scala/scalam/plotting/Plot.scala b/src/main/scala/scalam/plotting/Plot.scala index 232f95f..8f8c996 100644 --- a/src/main/scala/scalam/plotting/Plot.scala +++ b/src/main/scala/scalam/plotting/Plot.scala @@ -11,8 +11,8 @@ import scala.language.implicitConversions class Plot( val dataSets: Seq[DataSet], title: String, - xLabel: String, - yLabel: String, + xAxis: Axis, + yAxis: Axis, grid: Boolean = true, legend: Boolean = true, fontSize: Int = 10, @@ -77,8 +77,8 @@ class Plot( roots += m.grid(this.grid) roots += m.fontSize(this.fontSize) roots += m.title(this.title) - roots += m.xLabel(this.xLabel) - roots += m.yLabel(this.yLabel) + roots ++= m.xAxis(this.xAxis) + roots ++= m.yAxis(this.yAxis) roots ++= plots roots += m.legend(dataSets) @@ -114,8 +114,12 @@ object Plot { def hold(b: Boolean) = Function(Identifier("hold"), if (b) On else Off) def grid(show: Boolean) = Function(Identifier("grid"), if (show) On else Off) def title(s: String) = Function(Identifier("title"), StringLiteral(s)) - def xLabel(s: String) = Function(Identifier("xlabel"), StringLiteral(s)) - def yLabel(s: String) = Function(Identifier("ylabel"), StringLiteral(s)) + def xAxis(x: Axis) = Seq( + Function(Identifier("xlabel"), StringLiteral(x.label)), + Function(Identifier("set"), Variable(Identifier("gca")), StringLiteral("xscale"), x.scale.expression)) + def yAxis(x: Axis) = Seq( + Function(Identifier("ylabel"), StringLiteral(x.label)), + Function(Identifier("set"), Variable(Identifier("gca")), StringLiteral("yscale"), x.scale.expression)) def fontSize(size: Int) = Function(Identifier("set"), Variable(Identifier("gca")), StringLiteral("fontsize"), IntLiteral(size)) def load(id: Identifier, path: Path) = Assign(id, Function(Identifier("load"), StringLiteral(path.path))) def plot(dataSet: Identifier, styleElements: Seq[StyleElement]) = { diff --git a/src/main/scala/scalam/plotting/Plotter.scala b/src/main/scala/scalam/plotting/Plotter.scala index 199827c..0f9c151 100644 --- a/src/main/scala/scalam/plotting/Plotter.scala +++ b/src/main/scala/scalam/plotting/Plotter.scala @@ -4,12 +4,14 @@ import scalam.m._ import scalam.m.ast._ import scalam.m.interpretation.MInterpreter import scalax.file.Path +import scalam.plotting.scale.Scale +import scalam.plotting.scale.Lin trait Plotter { self: MInterpreter => import Plotter._ - def plot(dataSets: Seq[DataSet], title: String, x: String, y: String, grid: Boolean = true, legend: Boolean = true)(implicit styles: Seq[Style[StyleElement]] = defaultStyles, fontSize: FontSize = defaultFontSize) = { - val plot = new Plot(dataSets, title, x, y, grid, legend, styles = styles, fontSize = fontSize.fontSize) + def plot(dataSets: Seq[DataSet], title: String, x: String, y: String, scales: (Scale, Scale) = (Lin, Lin), grid: Boolean = true, legend: Boolean = true)(implicit styles: Seq[Style[StyleElement]] = defaultStyles, fontSize: FontSize = defaultFontSize) = { + val plot = new Plot(dataSets, title, Axis(x, scales._1), Axis(y, scales._2), grid, legend, styles = styles, fontSize = fontSize.fontSize) val path = Path(Identifier.makeValid(title)) scalam.io.save(plot, path) val s = Function(Identifier("run"), StringLiteral((path / Plot.PlotFileName).path)) diff --git a/src/main/scala/scalam/plotting/scale/scales.scala b/src/main/scala/scalam/plotting/scale/scales.scala new file mode 100644 index 0000000..2d2f4da --- /dev/null +++ b/src/main/scala/scalam/plotting/scale/scales.scala @@ -0,0 +1,7 @@ +package scalam.plotting.scale + +import scalam.m.ast._ + +trait Scale {def expression: Expression} +case object Lin extends Scale {def expression = StringLiteral("lin")} +case object Log extends Scale {def expression = StringLiteral("log")}
\ No newline at end of file |