"RawIterables" Extension Methods

For convienience, sometimes I can easily get "raw datatypes" which I just wan to plot quickly an with minimum ceremoney.

Pie charts, bar charts and the like, which are always going to look very similar to the examples on the vega website, and come from a simple datastructure. We want to be able to plot these as quickly as possible.

We achieve this through scala 3's extension methods - have a look in the viz.extensions.RawIterables.* package for ideas. Feel free to contribute more or create your own - it's quick enough.

Labelled bar chart

import viz.extensions.RawIterables.*
import viz.PlotTargets.doNothing

val chart = List(("A", 4),("B", 6),("C", -1)).plotBarChart(List())
viz.js.showChartJs(chart,node)

Bar chart

import viz.extensions.RawIterables.*
import viz.PlotTargets.doNothing

viz.js.showChartJs(
  (1 to 5).plotBarChart( List(viz.Utils.fillDiv) ),
  node
)

Pie chart

import viz.extensions.RawIterables.*
import viz.PlotTargets.doNothing

viz.js.showChartJs(
  (1 to 5).plotPieChart(List(viz.Utils.fillDiv)),
  node
)

Pie chart with labels...

import viz.extensions.RawIterables.*
import viz.PlotTargets.doNothing

viz.js.showChartJs(
  (1 to 5).map(i => (scala.util.Random.nextString(5), i)).plotPieChart(List()),
  node
)

Word cloud

import viz.extensions.RawIterables.*
import viz.PlotTargets.doNothing

viz.js.showChartJs(
  List(
    "how much wood would a wood chuck chuck if a wood chuck could chuck wood",
    "a wood chuck would chuck as much wood as a wood chuck could chuck if a wood chuck could chuck wood"
  ).plotWordcloud(),
  node
)

Line Chart

import viz.extensions.RawIterables.*
import viz.PlotTargets.doNothing

viz.js.showChartJs(
  List(1,5,3,15,7,8).plotLineChart(),
  node
)

Dot Plot

import viz.extensions.RawIterables.*
import viz.PlotTargets.doNothing

viz.js.showChartJs(
  List(1,11,1,2,3,4,4,4,4,4,5,6,8,8,9,8).plotDotPlot(),
  node
)

Scatter Plot

import viz.extensions.RawIterables.*
import viz.PlotTargets.doNothing

viz.js.showChartJs(
  List((1.0,2.0),(3.0,4.0),(0.5 , 5.0),(3.14159, 1.0)).plotScatter(),
  node
)