The `react_sparkbar()` function utilizes the dataui package <https://github.com/timelyportfolio/dataui> to create an interactive sparkline bar chart. The data provided must be in a list format. The vertical height of the sparkbar can be adjusted with `height`. By default, the height is matched to the height of a cell in a reactable table. However, the height can be increased to better see the patterns in the data. The four-sided margin around the sparkbar can be controlled with `margin()`. When labels are added to the sparkbars, the margin will auto-adjust (in most instances) to be able to display those labels. If the labels contain large values or values with many digits, the left and right margins may need to be increased slightly for the full numbers to be visible. The fill color and fill width can be controlled with `fill_color`, `fill_color_ref`, and `fill_opacity`. The outline color and width of the filled bars can be controlled with `outline_color`, `outline_color_ref`, and `outline_width`. `statline` can be used to show a horizontal dotted line that represents either the mean, median, min, or max (your choice). The appearance of the statline and statline labels can be controlled with `statline_color` and `statline_label_size`. A bandline can be added by using `bandline`. The options are innerquartiles which highlights the innerquartiles of the data or range which highlights the full range of the data. By default, `react_sparkbar()` is interactive and data points will be shown when hovering over the sparkbars. This can be turned off by setting `tooltip` to FALSE. There are two tooltip types available within `tooltip_type`. The size and color of the tooltip labels can be adjusted with `tooltip_size` and `tooltip_color`. Also by default, there are no labels on the bars themselves. However, one could add labels to the first, last, min, max, or all values within `labels`. The labels that are shown on the sparkbar and in the tooltip are automatically rounded to the nearest whole integer. But decimals can be shown by providing the number of decimal places in `decimals`. The minimum value of a data series is the minimum value shown for a sparkbar, but this can be adjusted with `min_value` and the max can be adjusted with `max_value`. `react_sparkline()` should be placed within the cell argument in reactable::colDef.
Usage
react_sparkbar(
data,
height = 22,
fill_color = "slategray",
fill_color_ref = NULL,
fill_opacity = 1,
outline_color = "transparent",
outline_color_ref = NULL,
outline_width = 1,
highlight_bars = NULL,
labels = "none",
label_size = "0.8em",
decimals = 0,
max_value = NULL,
min_value = NULL,
statline = NULL,
statline_color = "red",
statline_label_size = "0.8em",
bandline = NULL,
bandline_color = "red",
bandline_opacity = 0.2,
tooltip = TRUE,
tooltip_type = 1,
tooltip_color = NULL,
tooltip_size = "1.1em",
margin = NULL
)
Arguments
- data
Dataset containing a column with numeric values in a list format.
- height
Height of the sparkbar. Default is 22.
- fill_color
The color of the bar fill. Default is slategray.
- fill_color_ref
Optionally assign fill colors from another column by providing the name of the column containing the colors in quotes. Only one color can be provided per row. Default is NULL.
- fill_opacity
A value between 0 and 1 that adjusts the opacity. A value of 0 is fully transparent, a value of 1 is fully opaque. Default is 1.
- outline_color
The color of the outline around the filled bars. Default is transparent.
- outline_color_ref
Optionally assign outline colors from another column by providing the name of the column containing the colors in quotes. Only one color can be provided per row. Default is NULL.
- outline_width
Width of the outline around the filled bars. Default is 1.
- highlight_bars
Use `highlight_bars()` to assign colors to particular bars. Colors can be assigned to all, min, max, first, or last bars. By default, transparent colors are assigned to each bars.
- labels
Show labels for points of interest. Options are 'min', 'max', 'first', 'last', 'all', or 'none'. Default is 'none'.
- label_size
The size of the labels. Default is 0.8em.
- decimals
Numeric: The number of decimals displayed in the labels and tooltip. Default is 0.
- max_value
The maximum value of the sparkbar range. Default is NULL (automatically the maximum value of each sparkbar series). Takes either:
1. a numeric vector of length 1 2. a numeric vector of length equal to the number of rows 3. a column name (as string) which holds the max_values to use 4. a function which is applied to the maximum value of each row
- min_value
The minimum value of the sparkbar range. Default is NULL (automatically the minimum value of each sparkbar series). Takes either:
1. a numeric vector of length 1 2. a numeric vector of length equal to the number of rows 3. a column name (as string) which holds the min_values to use 4. a function which is applied to the minimum value of each row
- statline
Inserts a horizontal dotted line representing a statistic, and places the value of that statistic to the right of the line. Options are 'mean', 'median', 'min', or 'max'. Default is NULL.
- statline_color
The color of the horizontal dotted statline. Default is red.
- statline_label_size
The size of the label to the right of the statline. Default is 0.8em.
- bandline
Inserts a horizontal bandline to render ranges of interest. Options are 'innerquartiles' or 'range' (min to max). Default is NULL.
- bandline_color
The color of the bandline. Default is red.
- bandline_opacity
A value between 0 and 1 that adjusts the opacity. A value of 0 is fully transparent, a value of 1 is fully opaque. Default is 0.2.
- tooltip
Logical: turn the tooltip on or off. Default is TRUE.
- tooltip_type
The tooltip type. Options are 1 or 2. Default is 1.
- tooltip_color
The color of the tooltip labels. Default is NULL.
- tooltip_size
The size of the tooltip labels. Default is '1.1em'.
- margin
The four-sided margin around the sparkbar. Use margin() to assign the top, right, bottom, and left margins.
Examples
library(dplyr)
## Default sparkline bar chart
iris %>%
group_by(Species) %>%
summarize(petal_width = list(Petal.Width)) %>%
reactable(.,
columns = list(petal_width = colDef(cell = react_sparkbar(.))))
#> Error in x$width %||% settings$fig.width * settings$dpi: non-numeric argument to binary operator
## Highlight particular bars
iris %>%
group_by(Species) %>%
summarize(petal_width = list(Petal.Width)) %>%
reactable(.,
columns = list(petal_width = colDef(cell = react_sparkbar(.,
decimals = 1,
min_value = 0,
highlight_bars = highlight_bars(min="red",max="blue")))))
#> Error in x$width %||% settings$fig.width * settings$dpi: non-numeric argument to binary operator
## Conditionally assign fill colors to groups
iris %>%
group_by(Species) %>%
summarize(petal_width = list(Petal.Width)) %>%
mutate(flower_cols = case_when(
Species == "setosa" ~ "purple",
Species == "versicolor" ~ "darkgreen",
Species == "virginica" ~ "orange",
TRUE ~ "grey"
)) %>%
reactable(.,
columns = list(flower_cols = colDef(show=FALSE),
petal_width = colDef(cell = react_sparkbar(.,
height = 80,
fill_color_ref = "flower_cols"))))
#> Error in x$width %||% settings$fig.width * settings$dpi: non-numeric argument to binary operator
## Add labels to particular bars
iris %>%
group_by(Species) %>%
summarize(petal_width = list(Petal.Width)) %>%
reactable(.,
columns = list(petal_width = colDef(cell = react_sparkbar(.,
height = 80,
decimals = 1,
highlight_bars = highlight_bars(first="blue",last="red"),
labels = c("first","last")))))
#> Error in x$width %||% settings$fig.width * settings$dpi: non-numeric argument to binary operator
## Add statline to show the mean for each sparkbar
iris %>%
group_by(Species) %>%
summarize(petal_width = list(Petal.Width)) %>%
reactable(.,
columns = list(petal_width = colDef(cell = react_sparkbar(.,
height = 80,
decimals = 1,
statline = "mean"))))
#> Error in x$width %||% settings$fig.width * settings$dpi: non-numeric argument to binary operator
## Combine multiple elements together
iris %>%
group_by(Species) %>%
summarize(petal_width = list(Petal.Width)) %>%
reactable(.,
columns = list(petal_width = colDef(cell = react_sparkbar(.,
height = 80,
decimals = 1,
statline = "mean",
bandline = "innerquartiles"))))
#> Error in x$width %||% settings$fig.width * settings$dpi: non-numeric argument to binary operator