kandy 0.7.0 Help

Styles

Preparation

val df = DataFrame.readCSV("https://raw.githubusercontent.com/JetBrains/lets-plot-kotlin/master/docs/examples/data/mpg.csv") df.head(3)

untitled

manufacturer

model

displ

year

cyl

trans

drv

cty

hwy

fl

class

1

audi

a4

18

1999

4

auto\(l5\)

f

18

29

p

compact

2

audi

a4

18

1999

4

manual\(m5\)

f

21

29

p

compact

3

audi

a4

2

2008

4

manual\(m6\)

f

20

31

p

compact

fun pointPlotWithStyle( name: String, baseStyle: Style = Style.Minimal2, customStyleBuilder: CustomStyle.() -> Unit = {} ) = df.plot { points { x(cty) y(hwy) } layout { title = name style(baseStyle, customStyleBuilder) } } df.plot { points { x(cty) y(hwy) } }
Point Plot without Style
val bPlotDf = df.groupBy { fl }.count()
fun barPlotWithStyle( name: String, baseStyle: Style = Style.Minimal2, customStyleBuilder: CustomStyle.() -> Unit = {} ) = bPlotDf.plot { bars { x(fl) y(count) fillColor(fl) } layout { title = name style(baseStyle, customStyleBuilder) } } bPlotDf.plot { bars { x(fl) y(count) fillColor(fl) } }
Bar Plot without Style
val fPlotDf = df.groupBy { fl and year }.count()
fun barFacetPlotWithStyle( name: String, baseStyle: Style = Style.Minimal2, customStyleBuilder: CustomStyle.() -> Unit = {} ) = fPlotDf.plot { bars { x(fl) y(count) fillColor(fl) } facetGridX(year) layout { title = name style(baseStyle, customStyleBuilder) } } fPlotDf.plot { bars { x(fl) y(count) fillColor(fl) } facetGridX(year) }
Bar Facet Grid X Plot without Style

Elements

val eLine = LayoutParameters.line(color = Color.RED, width = 4.0) val eLine2 = LayoutParameters.line(color = Color.hex("#fcae91"), width = 1.0) val eLine3 = LayoutParameters.line(width = 4.0) val eBackground = LayoutParameters.background( borderLineColor = Color.hex("#2c7fb8"), fillColor = Color.hex("#edf8b1"), borderLineWidth = 2.0 ) val eText = LayoutParameters.text(color = Color.hex("#31a354")) val (w, h) = listOf(400) to listOf(300)

Styles

plotGrid( listOf( pointPlotWithStyle("Minimal2 Style - by default"), pointPlotWithStyle("Light Style", Style.Light), pointPlotWithStyle("Classic Style", Style.Classic), pointPlotWithStyle("Grey Style", Style.Grey), pointPlotWithStyle("Minimal Style", Style.Minimal), pointPlotWithStyle("None Style", Style.None) ), nCol = 2, fit = true )
All Default Styles

Custom Style

val yellowLight = Color.hex("#ffffcc") val orangeDark = Color.hex("#7f2704") val orangeNormal = Color.hex("#f16913") val orangeLight = Color.hex("#fff5eb") val styleOrangeConstructor: CustomStyle.() -> Unit = { global { line { color = orangeNormal width = 2.0 } background { borderLineColor = orangeNormal fillColor = orangeLight borderLineWidth = 2.0 } text { color = orangeDark } } axis { ticks { color = orangeNormal width = 1.0 } ticksLength = 7.0 onTop = true } legend { background { borderLineWidth = 1.0 } position = LegendPosition.Bottom } panel.grid { majorLine { color = orangeNormal width = .5 } minorLine { blank = true } } plotCanvas.background { fillColor = yellowLight borderLineWidth = 1.0 } axis.tooltip.background { borderLineColor = orangeDark } } plotGrid( listOf( pointPlotWithStyle("Scatter plot", Style.None, styleOrangeConstructor), barPlotWithStyle("Bar plot", Style.None, styleOrangeConstructor) ), nCol = 2, fit = true )
Orange Custom Style
barPlotWithStyle("Place legend") { legend { position(1.0, 1.0) justification(1.0, 1.0) direction = LegendDirection.HORIZONTAL } }
Custom Legend

Axis Tooltip

plotGrid( listOf( pointPlotWithStyle("blank tooltip x-axis") { xAxis.tooltip.background { blank = true } }, pointPlotWithStyle("background tooltip x-axis") { xAxis.tooltip.background(eBackground) } ), nCol = 2 )
Axis Tooltip

Line, Background, Text

plotGrid( listOf( pointPlotWithStyle("Default"), pointPlotWithStyle("Configured grid line") { global.line(eLine) } ), nCol = 2 )
Configured Grid Line
plotGrid( listOf( barPlotWithStyle("None style", Style.None), barPlotWithStyle("None style + Rect", Style.None) { global.background(eBackground) } ), nCol = 2 )
Configured Background Grid
plotGrid( listOf( barFacetPlotWithStyle("Default"), barFacetPlotWithStyle("Text") { global.text(eText) }, barFacetPlotWithStyle("Legend text") { legend.text(eText) }, barFacetPlotWithStyle("Strip text") { strip.text(eText) } ), nCol = 2 )
Custom Text 1
plotGrid( listOf( barPlotWithStyle("Default"), barPlotWithStyle("Text") { global.text(eText) }, barPlotWithStyle("Plot title") { plotCanvas.title(eText) }, barPlotWithStyle("Legend title") { legend.title(eText) } ), nCol = 2 )
Custom Text 2
plotGrid( listOf( pointPlotWithStyle("Default"), pointPlotWithStyle("Blank axis") { axis.line { blank = true } } ), nCol = 2 )
Blank Axis
plotGrid( listOf( pointPlotWithStyle("Default"), pointPlotWithStyle("Panel background") { panel.background(eBackground) } ), nCol = 2 )
Bakground Panel
plotGrid( listOf( barPlotWithStyle("Blank panel grid") { panel.grid.lineGlobal { blank = true } }, pointPlotWithStyle("Line panel grid") { panel.grid.lineGlobal(eLine) }, pointPlotWithStyle("Major line panel grid\n Minor line panel grid") { panel.grid { majorLine(eLine) minorLine(eLine2) } }, barPlotWithStyle("Blank major x-line panel grid\n major y-line panel grid\n minor y-line panel grid") { panel.grid { majorXLine { blank = true } majorYLine(eLine) minorYLine(eLine2) } } ), nCol = 2 )
Panel Grid
plotGrid( listOf( barFacetPlotWithStyle("Grey Style", Style.Grey), barFacetPlotWithStyle("Strip background") { strip.background(eBackground) }, barFacetPlotWithStyle("Blank strip background") { strip.background { blank = true } }, barFacetPlotWithStyle("Blank strip text") { strip.text { blank = true } } ), nCol = 2 )
Background Strip
plotGrid( listOf( barPlotWithStyle("x-axis line") { xAxis.line(eLine3) }, barPlotWithStyle("On top x-axis line") { xAxis { line(eLine3) onTop = true } } ), nCol = 2 )
Configured X-Axis Line

Miscellaneous

plotGrid( listOf( fPlotDf.plot { bars { x(fl) y(count) fillColor(fl) } coordFlip() layout { title = "Default" } }, fPlotDf.plot { bars { x(fl) y(count) fillColor(fl) } coordFlip() layout { title = "Plot 1" style { global { line(eLine) text(eText) } } } }, fPlotDf.plot { bars { x(fl) y(count) fillColor(fl) } coordFlip() layout { title = "Plot 2" style { axis { line(eLine) onTop = true } legend.title(eText) } } }, fPlotDf.plot { bars { x(fl) y(count) fillColor(fl) } coordFlip() layout { title = "Plot 3" style { plotCanvas.title(eText) panel { background(eBackground) grid { majorXLine { blank = true } minorXLine { blank = true } majorYLine(eLine) minorYLine(eLine2) } } } } }, fPlotDf.plot { bars { x(fl) y(count) fillColor(fl) } coordFlip() layout { title = "Plot 4" style { strip { background(eBackground) text(eText) } } } }, fPlotDf.plot { bars { x(fl) y(count) fillColor(fl) } coordFlip() layout { title = "Plot 5" style { xAxis { text(eText) title(eText) ticks(eLine) line(eLine2) tooltip.background { blank = true } } } } } ), nCol = 2 )
Miscellaneous
plotGrid( listOf( df.plot { points { x(cty) y(hwy) color(fl) tooltips(anchor = Anchor.TOP_CENTER, minWidth = 50.0) {} } layout.title = "Tooltip: top-center" }, df.plot { points { x(cty) y(hwy) color(fl) tooltips(anchor = Anchor.TOP_CENTER, minWidth = 50.0) {} } layout { title = "Grey background" style { panel.background { borderLineColor = Color.PURPLE fillColor = Color.GREY } } } } ), nCol = 2 )
Configured Tooltip and Background
Last modified: 09 February 2024