如何显示直方图列的间隔而不是平均值?"e_tooltip(formatter = )"

3

我有一个柱状图,需要查看的不是柱状图列的平均值(图片中为2.9),而是其区间(2.8-3.0)。如何实现?

示例代码:

iris %>% setDT() %>% 
    e_charts() %>%
    e_histogram(
        Sepal.Width,
        name = "histogram") %>%
    e_density(
        Sepal.Width,
        name = "density",
        y_index = 1) %>%
    # e_tooltip(trigger = "axis")
    e_tooltip(trigger = "axis")

我看到的和我想要看到的: 在此输入图片描述
1个回答

1
为了添加这些信息,我编写了一个JS函数,进入e_tooltip的调用。只有一个元素我无法动态获取——数据的行数。
在JS中,您看到数字32,那是您需要在此代码中更新的唯一信息(除了e_函数中的数据)。
假设:
  • 在调用直方图时未指定binwidthecharts4r计算了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)))     # <<---- I'm new!!

enter image description here

这是另一个例子。在这里,我替换了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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接