如何在用 highcharter 制作的箱线图中添加平均线?

How to add mean line in a boxplot made with highcharter?

我正在尝试在用 {highcharter} 制作的箱线图的工具提示中添加平均值(均值)。默认情况下,它显示:最小值、最大值、Q1、Q3 和中值。 我已经在这里问过了:

但现在我想用一条线显示平均值! 我在 JS 中看到了这个:
https://www.javaer101.com/en/article/95104988.html

我想我在下面的例子中用 {highcharter} 结束了。

非常感谢!

library(dplyr)
library(highcharter) 

data(pokemon) 

pokemon_graph <- pokemon %>% 
  group_by(type_1) %>% 
  mutate(moyenne = round(mean(height,na.rm = T)),1) %>% 
  ungroup()

dat <- data_to_boxplot(pokemon_graph, height, type_1, name = "height in meters")

highchart() %>%
  hc_xAxis(type = "category") %>%
  hc_add_series_list(dat) %>% 
  hc_tooltip(useHTML = TRUE, headerFormat = "<strong>mon graph</strong><br/>",
             pointFormat = paste0("Min: {point.low}<br/>
                                   Q1: {point.q1}<br/>
                                   Median: {point.median}<br/>
                                   Q3: {point.q3}<br/>
                                   Max: {point.high}<br/>
                                   Mean: {point.moyenne}<br/>"))

我认为您可以包装 JS 代码并在专用的 Highcharts API 上操作,它可以格式化工具提示:https://api.highcharts.com/highcharts/tooltip.formatter

在这里您可以找到一篇描述如何在 R 中完成此操作的文章: https://www.highcharts.com/blog/tutorials/working-with-highcharts-javascript-syntax-in-r/?fbclid=IwAR3etap9WisQW43uzG7epgCWfcwy6oWBisUVOwzlADsKKb2mOO_XXojp948

Hacking Highcharter给出了一个可能的解决方案。

您可以使用均值计算创建自定义 get_box_values 函数:

get_box_values <- function(x) {
  boxplot.stats(x)$stats %>% t() %>% cbind(mean(x)) %>% as.data.frame() %>% 
    setNames(c("low", "q1", "median", "q3", "high", "mean"))
}

然后您可以在 highcharter 命名空间中分配此函数并使用其新计算:

library(dplyr)
library(highcharter) 

data(pokemon) 

get_box_values <- function(x) {
  boxplot.stats(x)$stats %>% t() %>% cbind(mean(x)) %>% as.data.frame() %>% 
    setNames(c("low", "q1", "median", "q3", "high", "mean"))
}

assignInNamespace("get_box_values", get_box_values, ns="highcharter")

dat <- data_to_boxplot(data = pokemon, height, type_1, name = "height in meters")

highchart() %>%
  hc_xAxis(type = "category") %>%
  hc_add_series_list(dat) %>% 
  hc_tooltip(useHTML = TRUE, headerFormat = "<strong>mon graph</strong><br/>",
             pointFormat = paste0("Min: {point.low}<br/>
                                   Q1: {point.q1}<br/>
                                   Median: {point.median}<br/>
                                   Q3: {point.q3}<br/>
                                   Max: {point.high}<br/>
                                   Mean: {point.mean}<br/>"))