Utility function to add data where the original JavaScript library expects nested data.
Usage
e_add(e, param, ..., .serie = NULL, .data = NULL)
e_add_nested(e, param, ..., .serie = NULL, .data = NULL)
e_add_unnested(e, param, value, .serie = NULL, .data = NULL)Arguments
- e
An
echarts4robject as returned bye_chartsor a proxy as returned byecharts4rProxy.- param
The nested parameter to add data to.
- ...
Any other option to pass, check See Also section.
- .serie
Serie's index to add the data to, if `NULL` then it is added to all.
- .data
A dataset to use, if none are specified than the original dataset passed to `e_charts` is used.
- value
The column to map to the parameter.
Details
For instance, e_funnel lets you pass values and labels
(from your initial data.frame) which corresponds to name and value in the
original library.
However the latter also takes, label, itemStyle, and emphasis but being JSON arrays
they translate to lists in R and dealing with nested data.frames is not ideal. e_add remedies to that.
It allows adding those nested data points, see the examples below.
Functions
- `e_add_nested`: Adds nested data, e.g.: `e_add_nested("itemStyle", color, fontBold)` creates `itemStyle: color: 'red', fontBold: 'bold'`. - `e_add_unnested`: Adds unnested data, e.g.: `e_add_unnested("symbolSize", size)` creates `symbolSize: 4`.
Examples
# funnel can take nested itemStyle
# https://echarts.apache.org/en/option.html#series-funnel.data
funnel <- data.frame(
stage = c("View", "Click", "Purchase"),
value = c(80, 30, 20),
color = c("blue", "red", "green")
)
funnel |>
e_charts() |>
e_funnel(value, stage) |>
e_add_nested("itemStyle", color)
# Heatmap can take nested label
# https://echarts.apache.org/en/option.html#series-heatmap.data
v <- LETTERS[1:10]
matrix <- data.frame(
x = sample(v, 300, replace = TRUE),
y = sample(v, 300, replace = TRUE),
z = rnorm(300, 10, 1),
stringsAsFactors = FALSE
) |>
dplyr::group_by(x, y) |>
dplyr::summarise(z = sum(z)) |>
dplyr::ungroup() |>
dplyr::mutate(
show = TRUE,
fontStyle = round(runif(dplyr::n(), 5, 12))
)
#> `summarise()` has grouped output by 'x'. You can override using the `.groups`
#> argument.
matrix |>
e_charts(x) |>
e_heatmap(y, z) |>
e_visual_map(z) |>
e_add_nested(
"label",
show,
fontStyle
)
