import io.data2viz.charting.*
import io.data2viz.charting.dimension.*
import io.data2viz.charting.chart.*
import io.data2viz.charting.chart.mark.*
import io.data2viz.charting.viz.*
import io.data2viz.geom.*
import io.data2viz.charting.layout.*
import io.data2viz.math.*
import io.data2viz.shape.*
val width = 700.0
val height = 500.0
enum class Gender { M, F }
data class Record(val gender: Gender, val weight: Double, val height: Double)
fun main() {
// Creating and sizing the VizContainer
val vc = newVizContainer().apply {
size = Size(width, height)
}
vc.chart(results) {
// Use a "crosshair" cursor
cursor {
type = Cursor.Type.Crosshair
}
// Create 2 continuous numeric dimensions
val weight = quantitative( { domain.weight } ) {
name = "Weight in Kg."
}
val height = quantitative( { domain.height } ) {
name = "Height in cm."
}
// Split our dataset in 2 series based on gender
series = discrete( { domain.gender } )
// Plot values
plot(weight, height) {
strokeColor = discrete( { config.mark.discreteFills[indexOfSeries].withAlpha(50.pct) } )
symbol = discrete( { if (domain.gender == Gender.M) Symbols.Diamond else Symbols.Circle } )
}
}
}
val results = listOf(
Record(Gender.M,77.0,182.0),
Record(Gender.F,58.0,161.0),
Record(Gender.F,53.0,161.0),
Record(Gender.M,68.0,177.0),
Record(Gender.F,59.0,157.0),
Record(Gender.M,76.0,170.0),
Record(Gender.M,76.0,167.0),
Record(Gender.M,69.0,186.0),
Record(Gender.M,71.0,178.0),
Record(Gender.M,65.0,171.0),
Record(Gender.M,70.0,175.0),
Record(Gender.F,51.0,161.0),
Record(Gender.F,64.0,168.0),
Record(Gender.F,52.0,163.0),
Record(Gender.F,65.0,166.0),
Record(Gender.M,92.0,187.0),
Record(Gender.F,62.0,168.0),
Record(Gender.M,76.0,197.0),
Record(Gender.F,61.0,175.0),
Record(Gender.M,119.0,180.0),
Record(Gender.F,61.0,170.0),
Record(Gender.M,65.0,175.0),
Record(Gender.M,66.0,173.0),
Record(Gender.F,54.0,171.0),
Record(Gender.F,50.0,166.0),
Record(Gender.F,63.0,169.0),
Record(Gender.F,58.0,166.0),
Record(Gender.F,39.0,157.0),
Record(Gender.M,101.0,183.0),
Record(Gender.F,71.0,166.0),
Record(Gender.M,75.0,178.0),
Record(Gender.M,79.0,173.0),
Record(Gender.F,52.0,164.0),
Record(Gender.F,68.0,169.0),
Record(Gender.M,64.0,176.0),
Record(Gender.F,56.0,166.0),
Record(Gender.M,69.0,174.0),
Record(Gender.M,88.0,178.0),
Record(Gender.M,65.0,187.0),
Record(Gender.F,54.0,164.0),
Record(Gender.M,80.0,178.0),
Record(Gender.F,63.0,163.0),
Record(Gender.M,78.0,183.0),
Record(Gender.M,85.0,179.0),
Record(Gender.F,54.0,160.0),
Record(Gender.M,73.0,180.0),
Record(Gender.F,49.0,161.0),
Record(Gender.F,54.0,174.0),
Record(Gender.F,75.0,162.0),
Record(Gender.M,82.0,182.0),
Record(Gender.F,56.0,165.0),
Record(Gender.M,74.0,169.0),
Record(Gender.M,102.0,185.0),
Record(Gender.M,64.0,177.0),
Record(Gender.M,65.0,176.0),
Record(Gender.F,66.0,170.0),
Record(Gender.M,73.0,183.0),
Record(Gender.M,75.0,172.0),
Record(Gender.M,57.0,173.0),
Record(Gender.M,68.0,165.0),
Record(Gender.M,71.0,177.0),
Record(Gender.M,71.0,180.0),
Record(Gender.F,78.0,173.0),
Record(Gender.M,97.0,189.0),
Record(Gender.F,60.0,162.0),
Record(Gender.F,64.0,165.0),
Record(Gender.F,64.0,164.0),
Record(Gender.F,52.0,158.0),
Record(Gender.M,80.0,178.0),
Record(Gender.F,62.0,175.0),
Record(Gender.M,66.0,173.0),
Record(Gender.F,55.0,165.0),
Record(Gender.F,56.0,163.0),
Record(Gender.F,50.0,166.0),
Record(Gender.F,50.0,171.0),
Record(Gender.F,50.0,160.0),
Record(Gender.F,63.0,160.0),
Record(Gender.M,69.0,182.0),
Record(Gender.M,69.0,183.0),
Record(Gender.F,61.0,165.0),
Record(Gender.M,55.0,168.0),
Record(Gender.F,53.0,169.0),
Record(Gender.F,60.0,167.0),
Record(Gender.F,56.0,170.0),
Record(Gender.M,59.0,182.0),
Record(Gender.M,62.0,178.0),
Record(Gender.F,53.0,165.0),
Record(Gender.F,57.0,163.0),
Record(Gender.F,57.0,162.0),
Record(Gender.M,70.0,173.0),
Record(Gender.F,56.0,161.0),
Record(Gender.M,84.0,184.0),
Record(Gender.M,69.0,180.0),
Record(Gender.M,88.0,189.0),
Record(Gender.F,56.0,165.0),
Record(Gender.M,103.0,185.0),
Record(Gender.F,50.0,169.0),
Record(Gender.F,52.0,159.0),
Record(Gender.F,55.0,155.0),
Record(Gender.F,55.0,164.0),
Record(Gender.M,63.0,178.0),
Record(Gender.F,47.0,163.0),
Record(Gender.F,45.0,163.0),
Record(Gender.F,62.0,175.0),
Record(Gender.F,53.0,164.0),
Record(Gender.F,52.0,152.0),
Record(Gender.F,57.0,167.0),
Record(Gender.F,64.0,166.0),
Record(Gender.F,59.0,166.0),
Record(Gender.M,84.0,183.0),
Record(Gender.M,79.0,179.0),
Record(Gender.F,55.0,174.0),
Record(Gender.M,67.0,179.0),
Record(Gender.F,76.0,167.0),
Record(Gender.F,62.0,168.0),
Record(Gender.M,83.0,184.0),
Record(Gender.M,96.0,184.0),
Record(Gender.M,75.0,169.0),
Record(Gender.M,65.0,178.0),
Record(Gender.M,78.0,178.0),
Record(Gender.M,69.0,167.0),
Record(Gender.F,68.0,178.0),
Record(Gender.F,55.0,165.0),
Record(Gender.M,67.0,179.0),
Record(Gender.F,52.0,169.0),
Record(Gender.F,47.0,153.0),
Record(Gender.F,45.0,157.0),
Record(Gender.F,68.0,171.0),
Record(Gender.F,44.0,157.0),
Record(Gender.F,62.0,166.0),
Record(Gender.M,87.0,185.0),
Record(Gender.F,56.0,160.0),
Record(Gender.F,50.0,148.0),
Record(Gender.M,83.0,177.0),
Record(Gender.F,53.0,162.0),
Record(Gender.F,64.0,172.0),
Record(Gender.F,62.0,167.0),
Record(Gender.M,90.0,188.0),
Record(Gender.M,85.0,191.0),
Record(Gender.M,66.0,175.0),
Record(Gender.F,52.0,163.0),
Record(Gender.F,53.0,165.0),
Record(Gender.F,54.0,176.0),
Record(Gender.F,64.0,171.0),
Record(Gender.F,55.0,160.0),
Record(Gender.F,55.0,165.0),
Record(Gender.F,59.0,157.0),
Record(Gender.F,70.0,173.0),
Record(Gender.M,88.0,184.0),
Record(Gender.F,57.0,168.0),
Record(Gender.F,47.0,162.0),
Record(Gender.F,47.0,150.0),
Record(Gender.F,55.0,162.0),
Record(Gender.F,48.0,163.0),
Record(Gender.M,54.0,169.0),
Record(Gender.M,69.0,172.0),
Record(Gender.F,59.0,170.0),
Record(Gender.F,58.0,169.0),
Record(Gender.F,57.0,167.0),
Record(Gender.F,51.0,163.0),
Record(Gender.F,54.0,161.0),
Record(Gender.F,53.0,162.0),
Record(Gender.F,59.0,172.0),
Record(Gender.M,56.0,163.0),
Record(Gender.F,59.0,159.0),
Record(Gender.F,63.0,170.0),
Record(Gender.F,66.0,166.0),
Record(Gender.M,96.0,191.0),
Record(Gender.F,53.0,158.0),
Record(Gender.M,76.0,169.0),
Record(Gender.F,54.0,163.0),
Record(Gender.M,61.0,170.0),
Record(Gender.M,82.0,176.0),
Record(Gender.M,62.0,168.0),
Record(Gender.M,71.0,178.0),
Record(Gender.F,60.0,174.0),
Record(Gender.M,66.0,170.0),
Record(Gender.M,81.0,178.0),
Record(Gender.M,68.0,174.0),
Record(Gender.M,80.0,176.0),
Record(Gender.F,43.0,154.0),
Record(Gender.M,82.0,181.0),
Record(Gender.F,63.0,165.0),
Record(Gender.M,70.0,173.0),
Record(Gender.F,56.0,162.0),
Record(Gender.F,60.0,172.0),
Record(Gender.F,58.0,169.0),
Record(Gender.M,76.0,183.0),
Record(Gender.F,50.0,158.0),
Record(Gender.M,88.0,185.0),
Record(Gender.M,89.0,173.0),
Record(Gender.F,59.0,164.0),
Record(Gender.F,51.0,156.0),
Record(Gender.F,62.0,164.0),
Record(Gender.M,74.0,175.0),
Record(Gender.M,83.0,180.0),
Record(Gender.M,81.0,175.0),
Record(Gender.M,90.0,181.0),
Record(Gender.M,79.0,177.0)
)