如何为echarts4r箱形图tooltip添加离群点自定义悬浮信息
解决方案
e_boxplot 内置的离群点渲染逻辑不会携带原始数据集的自定义字段,因此无法直接通过bind方法将自定义字段注入到tooltip回调参数中,我们可以通过手动渲染离群点的方式实现需求:
- 先按照箱线图的离群点判定规则(值小于Q1-1.5IQR或大于Q3+1.5IQR),提前计算所有指标的离群点,关联对应自定义字段
- 关闭
e_boxplot的内置离群点输出,用e_scatter绑定自定义字段渲染离群点,样式可以和原生离群点保持一致 - tooltip回调中区分悬浮的是箱线主体还是离群点,分别输出对应信息
完整可运行代码如下:
library(echarts4r) library(dplyr) library(tidyr) # 原始数据集 df <- data.frame( my_name = letters[1:11], x = c(1:10, 25), y = c(1:10, -6) ) # 离群点判定函数 is_outlier <- function(x) { q <- quantile(x, c(0.25, 0.75), na.rm = TRUE) iqr <- diff(q) return(x < q[1] - 1.5 * iqr | x > q[2] + 1.5 * iqr) } # 整理各指标的离群点数据,关联自定义名称 outlier_df <- df %>% pivot_longer(cols = c(x, y), names_to = "indicator", values_to = "value") %>% group_by(indicator) %>% filter(is_outlier(value)) %>% ungroup() # 绘制图表 df |> e_charts() |> # 箱线图关闭内置离群点渲染 e_boxplot(y, outliers = FALSE, name = "y指标") |> e_boxplot(x, outliers = FALSE, name = "x指标") |> # 手动添加离群点,绑定自定义名称 e_scatter( data = outlier_df, x = indicator, y = value, bind = my_name, symbol_size = 6, color = "#2c3e50", legend_show = FALSE, legend_hover_link = FALSE ) |> e_tooltip( formatter = htmlwidgets::JS(" function(params) { // 离群点(散点系列)的提示内容 if(!params.value.length) { return `<strong>离群点</strong> <br/>所属指标:${params.name} <br/>数值:${params.value} <br/>自定义名称:${params.name}` } // 箱线主体的提示内容 return `<strong>${params.seriesName}</strong> <br/>最大值:${params.value[5]} <br/>上四分位:${params.value[4]} <br/>中位数:${params.value[3]} <br/>下四分位:${params.value[2]} <br/>最小值:${params.value[1]}` } ") )
可根据需求自行调整离群点样式、tooltip输出字段。
内容的提问来源于stack exchange,提问作者L Smeets
相关产品推荐
相关产品推荐

