Let's get started. We will work in the Scala console, but a program similar to this example is available in BreezeDemo.scala in the examples corresponding to this chapter. Create a build.sbt file with the following lines:
Let's start by plotting a sigmoid curve, . We will first generate the data using Breeze. Recall that the linspace method creates a vector of doubles, uniformly distributed between two values:
scala> val x = linspace(-4.0, 4.0, 200)x: DenseVector[Double] = DenseVector(-4.0, -3.959798...scala> val fx = sigmoid(x)fx: DenseVector[Double] = DenseVector(0.0179862099620915,...
We now have the data ready for plotting. The first step is to create a figure:
scala> val fig = Figure()fig: breeze.plot.Figure = breeze.plot.Figure@37e36de9
This creates an empty Java Swing window (which may appear on your taskbar or equivalent). A figure can contain one or more plots. Let's add a plot to our figure:
scala> val plt = fig.subplot(0)plt: breeze.plot.Plot = breeze.plot.Plot@171c2840
For now, let's ignore the 0 passed as argument to .subplot. We can add data points to our plot:
The plot function takes two arguments, corresponding to the x and y values of the data series to be plotted. To view the changes, you need to refresh the figure:
scala> fig.refresh()
Look at the Swing window now. You should see a beautiful sigmoid, similar to the one below. Right-clicking on the window lets you interact with the plot and save the image as a PNG:
You can also save the image programmatically as follows:
scala> fig.saveas("sigmoid.png")
Breeze-viz currently only supports exporting to PNG.