quantifind / wisp

Wisp Is Scala Plotting

Version Matrix

Wisp : Wisp Is Scala Plotting is a console-centric plotting library for scala. It focuses on existing web-based plotting libraries, and strives to bring the power and flexibility of web-based plotting tools to the scala console, while preserving an at-your-finger-tips feel readily found in matlab, R, and many other languages.

Wisp Logo

Watch the introductory video

It is available on maven central. The alpha release of wisp is available as 0.0.4. An sbt dependency would look like:

"com.quantifind" %% "wisp" % "0.0.4"


Full usage can be found on the wiki, but by means of example:

Line Chart

generated by

austin-2:wisp austin$ sbt 'project wisp' console
[info] Loading project definition from /Users/austin/IdeaProjects/wisp/project
[info] Set current project to wisp (in build file:/Users/austin/IdeaProjects/wisp/)
[info] Set current project to Wisp (in build file:/Users/austin/IdeaProjects/wisp/)
[info] Starting scala interpreter...
Welcome to Scala version 2.10.3 (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0_25).
Type in expressions to have them evaluated.
Type :help for more information.

scala> import com.quantifind.charts.Highcharts._
import com.quantifind.charts.Highcharts._

scala> line((1 to 10), (1 to 10))
serving resources from: file:/Users/austin/IdeaProjects/wisp/index-1418179288496.html
2014-12-09 18:41:29.188:INFO:oejs.Server:jetty-7.6.0.v20120127
2014-12-09 18:41:29.216:INFO:oejsh.ContextHandler:started o.e.j.s.ServletContextHandler{/,file:/Users/austin/IdeaProjects/wisp/index-1418179288496.html}
2014-12-09 18:41:29.225:INFO:oejs.AbstractConnector:Started SocketConnector@
Server started:
Output written to (CMD + Click link in Mac OSX).
res0: com.quantifind.charts.highcharts.Highchart = Highchart(List(Series(Vector(Data(1,1,None,None), Data(2,2,None,None), Data(3,3,None,None), Data(4,4,None,None), Data(5,5,None,None), Data(6,6,None,None), Data(7,7,None,None), Data(8,8,None,None), Data(9,9,None,None), Data(10,10,None,None)),None,None,None,Some(line),None,None,None,None,series)),Some(Title(,None,None,None,None,None,None,None,title)),None,None,Some(Credits(None,,None,None,)),Some(Exporting(chart,None,None,None,None,None,None)),Some(Legend(None,None,None,Some(false),None,None,None,None,None,None,None,None,None,None,None,None,None,None,None,None,None)),None,true,None,None,Some([Lcom.quantifind.charts.highcharts.Axis;@40dc66ae))


Builtin Help

scala> import com.quantifind.charts.Highcharts._
import com.quantifind.charts.Highcharts._

scala> help()
serving resources from: file:/Users/austin/IdeaProjects/wisp/index-1418919953763.html
2014-12-18 08:25:53.984:INFO:oejs.Server:jetty-7.6.0.v20120127
2014-12-18 08:25:54.022:INFO:oejsh.ContextHandler:started o.e.j.s.ServletContextHandler{/,file:/Users/austin/IdeaProjects/wisp/index-1418919953763.html}
2014-12-18 08:25:54.035:INFO:oejs.AbstractConnector:Started SocketConnector@
Server started:

Available Plot Types: Takes an Iterable, an Iterable of pairs, a pair of Iterables, or an Iterable and a Function


Other plotting options:

	histogram                          Iterable of Numerics or Pairs
	boxplot                            Collections of five Numerics : low, q1, median, q3, high

Stylistic changes:

	hold                               plots the next plot on top of the existing plot
	unhold                             plots the next plot in a new chart
	title(String)                      add a title to the most recent plot
	xAxis(String)                      adds a label to the x-axis
	xAxisType([                        updates the x-axis type
	  "linear", "logarithmic",
	  "datetime", "category"
	xAxisCategories(Iterable[String])  create named labels for x-axis
	yAxis(String)                      adds a label to y-axis
	yAxisType([                        updates the y-axis type
	  "linear", "logarithmic",
	  "datetime", "category"
	yAxisCategories(Iterable[String])  create named labels for y-axis
	legend(Iterable[String])           adds a legend to the most recent plot
	stack(["normal", "percent"])       stacks bars, columns, and lines relative to each other

Server Controls:

	undo                               undoes the most recent action
	redo                               the opposite of undo
	delete                             wipes the most recent chart from the page
	deleteAll                          wipes all plots from the page


More Info

Watch the introductory video

Greater detail can be found on the wiki

Wisp is open source, and we hope to get involvement from the community. We'd love to get some pull requests. Also, even if you don't have a fix, feel free to report bugs or just request new features through the github issue tracker.


We would like to thank all of the engineers who helped make this possible

Andrew Berglund Original prototype
Andrew Danowitz Naming Wisp!
Austin Gibbons Highcharts integration
Jannis Eichborn Least squares regression
Nathan Fisher Web support
Pierre Andrews Unfiltered support

and the entire Quantifind family for all their help in design, support, and execution!


Wisp is released under the Apache License and we welcome any contributions within this license. Any pull request is welcome and will be reviewed and merged as quickly as possible.

Because this open source project is released by Quantifind as a company, if you want to submit a pull request, you will have to sign the following simple contributors agreement:


This library includes links to Highcharts. It does not include a copy of the source code, and does not modify the source code.

Highcharts is available freely for non-commercial use under Creative Common NonCommercial 3.0. It is not free for commercial use.