R语言 如何在工具提示中创建既包含总数又包含百分比的条形图?

nuypyhwy  于 2023-11-14  发布在  其他
关注(0)|答案(2)|浏览(107)

echarts4r中,我创建了一个工具提示,它可以显示总数和百分比。它在饼图或圆环图中工作,但在条形图中不工作,条形图显示 * 未定义的%*。我已经在条形图JS函数中尝试了totals += params.value[1]; perc = params.value[1] / totals;。但它不工作。

  1. library(tidyverse)
  2. library(echarts4r)
  3. My_df <- data.frame(n = c(2, 4, 10),
  4. x = c("A", "B", " C")) %>%
  5. mutate(percent = round(n/sum(n), 2) )

字符串
1.圆环图:

  1. My_df %>%
  2. e_charts(x) %>%
  3. e_pie(n, radius = c("50%", "70%")) %>%
  4. e_tooltip(formatter = htmlwidgets::JS("
  5. function(params){
  6. return('<strong>' + params.name +
  7. '</strong><br/>total: ' + params.value +
  8. '<br />percent: ' + params.percent) +'%' } "))


的数据
1.条形图:

  1. My_df %>%
  2. e_charts(x) %>%
  3. e_bar(n) %>%
  4. e_tooltip(formatter = htmlwidgets::JS("
  5. function(params){
  6. return('<strong>' + params.name +
  7. '</strong><br/>total: ' + params.value[1] +
  8. '<br/>percent: ' + params.percent) +'%' } "))

qvk1mo1f

qvk1mo1f1#

不同之处在于,对于e_pie,百分比值由echarts在后台计算,并作为属性添加到params对象(换句话说:对于饼图,不需要手动计算百分比值,实际上不使用数据的percent列)。但e_bar的情况并非如此。因此,params.percentundefined,因为没有名称为percent的属性。
然而,一种可能的方法是通过bind参数传递percent值,然后将其存储在name属性中,而Map到x上的类别值可以从value数组中检索,即value[0]

  1. library(echarts4r)
  2. My_df |>
  3. e_charts(x) |>
  4. e_bar(n, bind = percent) |>
  5. e_tooltip(
  6. formatter = htmlwidgets::JS("
  7. function(params) {
  8. return('<strong>' + params.value[0] +
  9. '</strong><br/>total: ' + params.value[1] +
  10. '<br/>percent: ' + 100 * params.name) +'%'
  11. }")
  12. )

字符串


的数据

展开查看全部
z0qdvdin

z0qdvdin2#

我认为你也可以尝试使用e_add_nested。在这里,你可以在你的数据中传递除了已经Map的变量之外的其他变量。

  1. library(tidyverse)
  2. library(echarts4r)
  3. My_df %>%
  4. e_charts(x) %>%
  5. e_bar(n) %>%
  6. e_add_nested('extra', percent) %>%
  7. e_tooltip(formatter = htmlwidgets::JS("
  8. function(params) {
  9. return('<strong>' + params.name +
  10. '</strong><br/>total: ' + params.value[1] +
  11. '<br/>percent: ' + params.data.extra.percent) +'%'
  12. }
  13. "))

字符串


的数据

展开查看全部

相关问题