val plot = new Plot();
val y1 = List(1.5, 1, 6, 5, 2, 8)
val cs = List(Color.black, Color.red, Color.gray, Color.green, Color.blue, Color.pink)
val ss = List(StrokeType.SOLID, StrokeType.SOLID, StrokeType.DASH, StrokeType.DOT, StrokeType.DASHDOT, StrokeType.LONGDASH)
plot.add(new Stems(y1, cs, ss, 5))
val plot = new Plot("Elo")
var cs = new Color(255, 0, 0, 128)// transparent bars
//cs[3] = Color.red // set color of a single bar, solid colored bar
plot.add(new Bars(List(1, 2, 3, 4), List(3, 5, 2, 3, 7), cs, Color.black, 0.3))
val plot = new Plot("Changing Point Size, Color, Shape")
val y1 = List(6, 7, 12, 11, 8, 14)
val y2 = y1.map(x => x - 1)
val y3 = y1.map(x => x - 2)
val y4 = y1.map(x => x - 3)
plot.add(new Points(y1))
plot.add(new Points(y2, ShapeType.CIRCLE))
plot.add(new Points(y3, 8.0, ShapeType.DIAMOND))
plot.add(new Points(y4, 12.0, Color.orange, Color.red))
val plot = new Plot("Changing point properties with list")
val cs = List(Color.black, Color.red, Color.orange, Color.green, Color.blue, Color.pink)
val ss = List(6.0, 9.0, 12.0, 15.0, 18.0, 21.0)
val fs = List(false, false, false, true, false, false)
val list = List(new Points(List(5,5,5,5,5,5), 12.0, cs),
new Points(List(4,4,4,4,4,4), 12.0, Color.gray, cs),
new Points(List(3,3,3,3,3,3), 12, Color.red),
new Points(List(2,2,2,2,2,2), 12.0, Color.black, fs, Color.black))
plot.add(list)
val plot = new Plot()
val y = List(3, 5, 2, 3)
val x0 = List(0, 1, 2, 3)
val x1 = List(3, 4, 5, 8)
plot.add(new Area(x0, y))
plot.add(new Area(x1, y, new Color(128, 128, 128, 50), 0))
val p = new Plot()
p.add(new Line(List(3, 6, 12, 24), "Median"))
p.add(new Area(List(4, 8, 16, 32), List(2, 4, 8, 16), new Color(255, 0, 0, 50), "Q1 to Q3"))
val y1 = List(1,5,3,2,3)
val y2 = List(7,2,4,1,3)
val p = new Plot("Plot with XYStacker", 200)
val a1 = new Area(y1, "y1")
val a2 = new Area(y2, "y2")
val p = new Plot ()
p.add(new Line(List(-1, 1)))
p.add(new ConstantLine(0, 0.65, StrokeType.DOT, Color.blue))
p.add(new ConstantLine(0, 1, StrokeType.DASHDOT, Color.blue))
p.add(new ConstantLine(1, 0.4, Color.gray, 5, true))
val constBand = new ConstantBand(List(1, 2), List(1, 3))
val lineVal = new Line(List(-3, 1, 3, 4, 5))
val plot = new Plot()
plot.add(lineVal)
plot.add(constBand)
val p = new Plot()
p.add(new Line(List(-3, 1, 2, 4, 5), List(4, 2, 6, 1, 5)))
p.add(new ConstantBand(List(Double.NegativeInfinity, 1), new Color(128, 128, 128, 50)))
p.add(new ConstantBand(List(1, 2)))
p.add(new ConstantBand(List(4, Double.PositiveInfinity)))
val plot = new Plot()
val xs = List(1,2,3,4,5,6,7,8,9,10)
val ys = List(8.6, 6.1, 7.4, 2.5, 0.4, 0.0, 0.5, 1.7, 8.4, 1)
def label(i: Int) : String = {
if (ys(i) > ys(i+1) && ys(i) > ys(i-1)) return "max"
if (ys(i) < ys(i+1) && ys(i) < ys(i-1)) return "min"
if (ys(i) > ys(i-1)) return "rising"
if (ys(i) < ys(i-1)) return "falling"
return ""
}
for (i <- 0 to xs.size()) {
if (i > 0 && i < xs.size()-1) {
plot.add(new Text(xs(i), ys(i), label(i), -i/3.0))
}
}
val plot = new Plot()
val xs = List(1,2,3,4,5,6,7,8,9,10)
val ys = List(8.6, 6.1, 7.4, 2.5, 0.4, 0.0, 0.5, 1.7, 8.4, 1)
def label(i: Int) : String = {
if (ys(i) > ys(i+1) && ys(i) > ys(i-1)) return "max"
if (ys(i) < ys(i+1) && ys(i) < ys(i-1)) return "min"
if (ys(i) > ys(i-1)) return "rising"
if (ys(i) < ys(i-1)) return "falling"
return ""
}
for (i <- 0 to xs.length) {
if (i > 0 && i < (xs.length-1)) {
plot.add(new Text(xs(i), ys(i), label(i), -i/3.0))
}
}
plot
val ch = new Crosshair(new Color(255, 128, 5), 2, StrokeType.DOT)
val pp = new Plot(ch, true, LegendLayout.HORIZONTAL, LegendPosition.TOP)
def x = List(1, 4, 6, 8, 10)
def y = List(3, 6, 4, 5, 9)
pp.add(new Line("Line", x, y, 3))
pp.add(new Bars("Bar", List(1,2,3,4,5,6,7,8,9,10), List(2, 2, 4, 4, 2, 2, 0, 2, 2, 4), 0.5))
pp.add(new Points(x, y, 10, List("x = ","y = ")))
import com.twosigma.beaker.fileloader.CsvPlotReader
import java.util
val rates = new CsvPlotReader().readAsList("tableRows.csv").asInstanceOf[util.List[util.Map[String, AnyRef]]]
new SimpleTimePlot(rates, List("y1", "y10"), "Price", List("All", "1 Year", "10 Year"))
import scala.collection.mutable.ListBuffer
val points = 100
val logBase = 10
var expys = new ListBuffer[Double]()
var xs = new ListBuffer[Double]()
for (i <- 0 to points) {
xs += i / 15.0
expys += Math.exp(xs(i))
}
val cplot = new CombinedPlot();
val logYPlot = new Plot("Linear x, Log y", "Log","", false, 0.0, true, logBase);
logYPlot.add(new Line("f(x) = exp(x)", xs.toList, expys.toList, 3.0f))
logYPlot.add(new Line("g(x) = x", xs.toList, xs.toList, 3.0f))
cplot.add(logYPlot, 3)
val linearYPlot = new Plot("Linear x, Linear y", "Linear", "", false, 0.0, true, logBase)
linearYPlot.add(new Line("f(x) = exp(x)", xs.toList, expys.toList, 3.0f))
linearYPlot.add(new Line("g(x) = x", xs.toList, xs.toList, 3.0f))
cplot.add(linearYPlot, 3);
cplot
import scala.collection.mutable.ListBuffer
val points = 100
val logBase = 10
var expys = new ListBuffer[Double]()
var xs = new ListBuffer[Double]()
for (i <- 0 to points) {
xs += i / 15.0
expys += Math.exp(xs(i))
}
val plot = new Plot("Log x, Log y", "Log","Log", true, logBase, true, logBase);
plot.add(new Line("f(x) = exp(x)", xs.toList, expys.toList, 3.0f))
plot.add(new Line("g(x) = x", xs.toList, xs.toList, 3.0f))
plot
import java.util.{Calendar, Date}
import java.util.SimpleTimeZone
val cal = Calendar.getInstance();
cal.add(Calendar.HOUR, -1)
val today = new Date()
val millis = today.getTime()
val hour = 1000 * 60 * 60;
val plot = new TimePlot(new SimpleTimeZone(10800000, "America/New_York"))
//list of milliseconds
plot.add(new Points((0 to 10).map(x => millis + hour * x).toList,
(0 to 10).toList,
10,
"milliseconds"));
plot.add(new Points((0 to 10).map(x => {cal.add(Calendar.HOUR, 1); cal.getTime()}).toList,
(0 to 10).toList,
5,
"date objects"));
import java.util.Date
val today = new Date()
val millis = today.getTime()
val nanos = millis * 1000 * 1000// g makes it arbitrary precision
val np = new NanoPlot()
np.add(new Points((0 to 10).map(x => nanos + 7 * x).toList,
(0 to 10).toList))
import scala.util.Random
val r = new Random()
val p = new Plot("Advanced Plot Styling",
"font-size:32px; font-weight: bold; font-family: courier; fill: green;",
"stroke: purple; stroke-width: 3;",
"color: green;")
p.add(new Points((1 to 1000).map(x => r.nextGaussian() * 10.0d).toList,
(1 to 1000).map(x => r.nextGaussian() * 20.0d).toList))
import java.nio.file.Files
byte[] picture = Files.readAllBytes(new File("widgetArch.png").toPath());
var p = new Plot();
// x y width height are coordinates, opacity is a double in 0~1
// image can be loaded via bytes, filepath, or url
p.add(new Rasters(List(-10,3), List(3,1.5), List(6,5), List(10,8), List(1,0.5), dataString: picture));
//p << new Rasters(x: -1, y: 4.5, width: 5, height: 8, opacity:0.5, filePath: "widgetArch.png");
p << new Rasters(x: [-4], y: [10.5], width: [7], height: [2], opacity:[1], fileUrl: "https://www.twosigma.com/static/img/twosigma.png");
// a list of images!
def x = [-8, -5, -3, -2, -1, 1, 2, 4, 6, 8]
def y = [4, 5, 1, 2, 0 ,3, 6, 4, 5, 9]
def width = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
def opacity = [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1]
p << new Rasters(x: x, y: y, width:width, height:width, opacity:opacity,fileUrl: "http://icons.iconarchive.com/icons/paomedia/small-n-flat/1024/sign-check-icon.png")
import java.io.File
import java.nio.file.Files
var picture: Array[Byte] = Files.readAllBytes(new File("widgetArch.png").toPath());
var p = new Plot();
// x y width height are coordinates, opacity is a double in 0~1
// image can be loaded via bytes, filepath, or url
p.add(new Rasters(List(-10,3), List(3,1.5), List(6,5), List(10,8), List(1,0.5), picture))
p.add(new Rasters(List(-4), List(10.5), List(2), List(7), List(1), "https://www.twosigma.com/static/img/twosigma.png"));
// a list of images!
val x = List(-8, -5, -3, -2, -1, 1, 2, 4, 6, 8)
val y = List(4, 5, 1, 2, 0 ,3, 6, 4, 5, 9)
val width = List(1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
val opacity = List(0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1)
p.add(new Rasters(x, y, width, width, opacity, "http://icons.iconarchive.com/icons/paomedia/small-n-flat/1024/sign-check-icon.png"))
val plot = new Plot("Setting 2nd Axis bounds")
val ys = List(0, 2, 4, 6, 15, 10)
val ys2 = List(-40, 50, 6, 4, 2, 0)
val ys3 = List(3, 6, 3, 6, 70, 6)
plot.add(new YAxis("Spread"))
plot.add(new Line(ys))
plot.add(new Line(ys2, "Spread"))
plot.getYAxes().get(0).setBound(1,5)
plot