geomErrorBar()
can be plotted horizontally by assigning y
,xmin
,xmax
aesthetics. The height of the error bar is defined by the height
.
New type of position adjustment 'dodgev'
is used to adjust the position by dodging overlaps to the side. Function positionDodgeV(height)
allows to set the dodge height.
%useLatestDescriptors
%use lets-plot
LetsPlot.getInfo()
Lets-Plot Kotlin API v.4.4.0. Frontend: Notebook with dynamically loaded JS. Lets-Plot JS v.3.2.0.
%use dataframe
The ToothGrowth dataset describes the effect of Vitamin C on tooth growth in guinea pigs. Each animal received one of three dose levels of vitamin C (0.5, 1, and 2 mg/day) by one of two delivery methods: orange juice (OJ) or ascorbic acid (VC).
val df = DataFrame.readCSV("https://raw.githubusercontent.com/JetBrains/lets-plot-docs/master/data/ToothGrowth.csv")
df.head(3)
DataFrame: rowsCount = 3, columnsCount = 3
Let's calculate the mean value of tooth length in each group, minimum and maximum values, and use these information to plot error bars.
val resultDf = df.groupBy { supp and dose }.aggregate {
mean { len } into "length"
min { len } into "len_min"
max { len } into "len_max"
}.sortBy { supp }
resultDf
DataFrame: rowsCount = 6, columnsCount = 5
letsPlot(resultDf.toMap()) +
geomErrorBar(height = 0.2, size = 1.2) { y = "dose"; xmin = "len_min"; xmax = "len_max"; color = "supp" } +
scaleColorBrewer(palette = "Set1") +
labs(x = "Tooth length [mm]")
To fix errorbars overlapping, use positionDodgeV(height)
- to move them vertically.
letsPlot(resultDf.toMap()) +
geomErrorBar(height = 0.2, size = 1.2, position = positionDodgeV(0.4)) {
y = "dose"; xmin = "len_min"; xmax = "len_max"; color = "supp"
} +
scaleColorBrewer(palette = "Set1") +
labs(x = "Tooth length [mm]")
letsPlot(resultDf.toMap()) { y = "dose" } +
geomBar(stat = Stat.identity, position = positionDodge(), orientation = "y") {
x = "length"; fill = "supp"
} +
geomErrorBar(height = 0.2, size=1.2, position = positionDodgeV(0.9)) {
xmin = "len_min"; xmax = "len_max"; group = "supp"
} +
scaleFillBrewer(palette = "Paired")