为了添加这些信息,我编写了一个JS函数,进入
e_tooltip
的调用。只有一个元素我无法动态获取——数据的行数。
在JS中,您看到数字32,那是您需要在此代码中更新的唯一信息(除了
e_
函数中的数据)。
假设:
- 在调用直方图时未指定
binwidth
(echarts4r
计算了bin宽度)
- 绘图的第一个系列是直方图
- 绘图的第二个系列是密度
使用行数和此函数创建所需格式的工具提示。
ttFrm <- function(rowCt) { # use row count to call function
htmlwidgets::JS(paste0("
function(data) {
console.log(data);
h = data[0]; /* histogram */
d = data[1]; /* density */
bc = h.value[1]; /* bin count */
ds = d.value[1]; /* density */
/* bin width = count in bin / count in dataset / density */
br = bc/", rowCt, "/ds/2; /* bin span divided by two */
bL = h.axisValue - br; /* bin low */
bH = h.axisValue + br; /* bin high */
return(
'<b>' + bL + ' - ' + bH + '</b><br /><span style=\"color:' +
h.color + ';\">●</span> ' + h.seriesName +
'<b style=\"padding-left: 2em;\">' +
bc + '</b><br /><span style=\"color:' +
d.color + ';\">●</span> ' + d.seriesName +
'<b style=\"padding-left: 2em;\">' +
ds + '</b><br/>')
}"))
}
这是一个应用此格式的示例。(绘图调用来自于
echarts4r
的示例绘图。)
mtcars |>
e_charts(elementId = 'chart') |>
e_histogram(mpg, name = "histogram") |>
e_density(mpg, areaStyle = list(opacity = .4),
smooth = TRUE, name = "density", y_index = 1) |>
e_tooltip(
trigger = "axis", confine = T,
textStyles = list(overflow = "breakall", width = 50),
formatter = ttFrm(nrow(mtcars)))
![enter image description here](https://istack.dev59.com/5mMVB.webp)
这是另一个例子。在这里,我替换了
iris
数据集的数据。
iris |>
e_charts(elementId = 'chart') |>
e_histogram(Sepal.Width, name = "histogram") |>
e_density(Sepal.Width, areaStyle = list(opacity = .4),
smooth = TRUE, name = "density", y_index = 1) |>
e_tooltip(
trigger = "axis", confine = T, digits = 3,
textStyles = list(overflow = "breakall", width = 50),
formatter = ttFrm(nrow(iris)))
![enter image description here](https://istack.dev59.com/R1Us1.webp)