给 tooltip 饼图添加额外的变量 echarts4r
Add extra variables to tooltip pie chart echarts4r
我正在使用 echarts4r
创建圆环图。现在我正在尝试添加自定义工具提示,并且我能够复制此处给出的示例 and here 。但是,我真的不明白这是如何扩展到饼图的。我想要一个带有工具提示的饼图,显示总百分比和相对百分比
library(tidyverse)
library(echarts4r)
My_df <- data.frame(n = c(1, 4, 10),
x = c("A", "B", " C")) %>%
mutate(percent = round(n/sum(n), 2) )
My_df %>%
e_charts(x) %>%
e_pie(n, radius = c("50%", "70%")) %>%
e_tooltip()
这是我迄今为止最好的一次拍摄
My_df %>%
e_charts(x) %>%
e_pie(n, radius = c("50%", "70%")) %>%
e_tooltip(formatter = htmlwidgets::JS("
function(params){
return('<strong>' + params.name +
'</strong><br />total: ' + params.value +
'<br />percent: ' + params.value[1]) } "))
在散点图示例中,额外的值是使用 bind =
附加的,但这不适用于饼图。
这可能比@WeihuangWong 在
中的回答更骇人听闻
如果您只想显示百分比,那么@norie 的答案就可以了。如果有人想在工具提示中显示 echarts 尚未计算的值,我的回答可能仍然有用。
按照该答案,您可以向 df 添加一个变量,其中包含系列的名称以及您希望在工具提示中显示的其他值,我将其称为 name
以供参考
在e_charts
中使用name
而不是x
在 e_tooltip
中将 name
拆分成多个部分并设置工具提示
但是,使用 name
有副作用,现在名称和百分比值都显示为标签和图例。为了摆脱这种情况,我们还必须为标签和图例添加格式化程序。
library(tidyverse)
library(echarts4r)
My_df <- data.frame(n = c(1, 4, 10),
x = c("A", "B", " C")) %>%
mutate(percent = round(n/sum(n), 2),
name = paste(x, percent, sep = ","))
My_df %>%
e_charts(name) %>%
e_pie(n, radius = c("50%", "70%"), label = list(
formatter = htmlwidgets::JS(
"function(params){
var vals = params.name.split(',')
return(vals[0])}"))
) %>%
e_legend(formatter = htmlwidgets::JS(
"function(name){
var vals = name.split(',')
return(vals[0])}")) %>%
e_tooltip(formatter = htmlwidgets::JS("
function(params){
var vals = params.name.split(',')
return('<strong>' + vals[0] +
'</strong><br />total: ' + params.value +
'<br />percent: ' + vals[1]) } "))
你不能用params.percent
吗?
My_df %>%
e_charts(x) %>%
e_pie(n, radius = c("50%", "70%")) %>%
e_tooltip(formatter = htmlwidgets::JS("
function(params){
return('<strong>' + params.name +
'</strong><br />total: ' + params.value +
'<br />percent: ' + params.percent) +'%' } "))
您还可以使用 Javascript template literals.
稍微整理一下
My_df %>%
e_charts(x) %>%
e_pie(n, radius = c("50%", "70%")) %>%
e_tooltip(formatter = htmlwidgets::JS("
function(params)
{
return `<strong>${params.name}</strong>
<br/>Total: ${params.value}
<br/>Percent: ${params.percent}%`
} "))
我正在使用 echarts4r
创建圆环图。现在我正在尝试添加自定义工具提示,并且我能够复制此处给出的示例
library(tidyverse)
library(echarts4r)
My_df <- data.frame(n = c(1, 4, 10),
x = c("A", "B", " C")) %>%
mutate(percent = round(n/sum(n), 2) )
My_df %>%
e_charts(x) %>%
e_pie(n, radius = c("50%", "70%")) %>%
e_tooltip()
这是我迄今为止最好的一次拍摄
My_df %>%
e_charts(x) %>%
e_pie(n, radius = c("50%", "70%")) %>%
e_tooltip(formatter = htmlwidgets::JS("
function(params){
return('<strong>' + params.name +
'</strong><br />total: ' + params.value +
'<br />percent: ' + params.value[1]) } "))
在散点图示例中,额外的值是使用 bind =
附加的,但这不适用于饼图。
这可能比@WeihuangWong 在
如果您只想显示百分比,那么@norie 的答案就可以了。如果有人想在工具提示中显示 echarts 尚未计算的值,我的回答可能仍然有用。
按照该答案,您可以向 df 添加一个变量,其中包含系列的名称以及您希望在工具提示中显示的其他值,我将其称为
name
以供参考在
e_charts
中使用name
而不是x
在
e_tooltip
中将name
拆分成多个部分并设置工具提示但是,使用
name
有副作用,现在名称和百分比值都显示为标签和图例。为了摆脱这种情况,我们还必须为标签和图例添加格式化程序。
library(tidyverse)
library(echarts4r)
My_df <- data.frame(n = c(1, 4, 10),
x = c("A", "B", " C")) %>%
mutate(percent = round(n/sum(n), 2),
name = paste(x, percent, sep = ","))
My_df %>%
e_charts(name) %>%
e_pie(n, radius = c("50%", "70%"), label = list(
formatter = htmlwidgets::JS(
"function(params){
var vals = params.name.split(',')
return(vals[0])}"))
) %>%
e_legend(formatter = htmlwidgets::JS(
"function(name){
var vals = name.split(',')
return(vals[0])}")) %>%
e_tooltip(formatter = htmlwidgets::JS("
function(params){
var vals = params.name.split(',')
return('<strong>' + vals[0] +
'</strong><br />total: ' + params.value +
'<br />percent: ' + vals[1]) } "))
你不能用params.percent
吗?
My_df %>%
e_charts(x) %>%
e_pie(n, radius = c("50%", "70%")) %>%
e_tooltip(formatter = htmlwidgets::JS("
function(params){
return('<strong>' + params.name +
'</strong><br />total: ' + params.value +
'<br />percent: ' + params.percent) +'%' } "))
您还可以使用 Javascript template literals.
稍微整理一下My_df %>%
e_charts(x) %>%
e_pie(n, radius = c("50%", "70%")) %>%
e_tooltip(formatter = htmlwidgets::JS("
function(params)
{
return `<strong>${params.name}</strong>
<br/>Total: ${params.value}
<br/>Percent: ${params.percent}%`
} "))