悬停散点图时显示变量名称
Display variable names when hovering a scatter plot
这是来自 this answer on GitHub 的 {echarts4r}
制作的情节:
library(echarts4r)
library(tibble)
mtcars %>%
rownames_to_column("model") %>%
e_charts(mpg) %>%
e_y_axis(drat) %>%
e_scatter(drat, symbol_size = 15, bind = model, scale = NULL) %>%
e_tooltip(formatter = htmlwidgets::JS("
function(params){
return('<strong>' + params.name +
'</strong><br />x-axis: ' + params.value[0] +
'<br />y-axis: ' + params.value[1]
)}
"))
如您所见,将鼠标悬停在一个点上时会显示车型名称和数值。但是,我不知道如何以相同的方式显示变量名。我知道我可以用它们的名称手动替换“x 轴”和“y 轴”,但我想自动替换。
我检查了documentation of echarts,但是使用{a}
(例如)不起作用。
有什么想法吗?
编辑:我使用 echarts4r 0.3.3
请找到下面的代码:
您需要使用params.seriesName来访问列名
mtcars %>%
tibble::rownames_to_column("model") %>%
e_charts(wt) %>%
e_scatter(mpg, qsec, bind = model, scale = NULL) %>%
e_tooltip(formatter = htmlwidgets::JS("
function(params){
return('<strong>' + params.seriesName +
'</strong><br />wt: ' + params.value[0] +
'<br />mpg: ' + params.value[1] + '<br> qsec:' + params.value[2]
)}
"))
我正在尝试了解我是否正在处理您可能真正需要的东西...
我想你想要灵活名称的原因是让它有一个单独的功能,以便在你需要时给你打电话......
那么这个怎么样?它使用一种变通方法来避免名称(在您将字符串而不是未加引号的名称传递给函数的意义上)。但是,如果您需要使用名称,我们可以尝试其他方式。
library(echarts4r)
library(tibble)
plot_escatter <- function(df, x_axis, y_axis, bind){
df %>%
e_charts_ (x_axis) %>%
e_y_axis_ (y_axis) %>%
e_scatter_(y_axis, symbol_size = 15, bind = bind, scale = NULL) %>%
e_tooltip(formatter = htmlwidgets::JS(paste0("
function(params){
return('<strong>' + params.name + '</strong><br />", x_axis, ": ' + params.value[0] +
'<br />", y_axis, ": ' + params.value[1]
)}
")))
}
mtcars %>%
rownames_to_column("model") %>%
plot_escatter("mpg", "drat", "model")
e_tooltip 传递的参数中不存在您要求的内容。
您可以通过将 params
传递给 console.log
并在浏览器中检查此日志来访问它们:
mtcars %>%
rownames_to_column("model") %>%
e_charts(mpg) %>%
e_y_axis(drat) %>%
e_scatter(drat, symbol_size = 15, bind = model, scale = NULL) %>%
e_tooltip(formatter = htmlwidgets::JS("
function(params){
var obj_str = JSON.stringify(params);
console.log(obj_str);
return('<strong>' + params.name +
'</strong><br />' + params.seriesName + ': ' + params.value[0] +
'<br />mpg: ' + params.value[1]
)}
"))
您会注意到 x-axis 名称在 params.seriesName
下,但找不到 y-axis 名称。
这是一个示例,如果您要检查 console.log
的 params
:
,您会发现什么
{"componentType":"series",
"componentSubType":"scatter",
"componentIndex":0,
"seriesType":"scatter",
"seriesIndex":0,
"seriesId":"\u0000drat\u00000",
"seriesName":"drat",
"name":"Ford Pantera L",
"dataIndex":9,
"data":{"value":[15.8,4.22],
"name":"Ford Pantera L"},
"value":[15.8,4.22],
"color":"#c23531",
"dimensionNames":["x","y"],
"encode":{"x":[0],"y":[1]},
"marker":"<span style=\"display:inline-block;
margin-right:5px;
border-radius:10px;
width:10px;height:10px;
background-color:#c23531;\"></span>",
"$vars":["seriesName","name","value"]
}
在这种情况下,下面@Edo的paste0
做法似乎很合理。
这是来自 this answer on GitHub 的 {echarts4r}
制作的情节:
library(echarts4r)
library(tibble)
mtcars %>%
rownames_to_column("model") %>%
e_charts(mpg) %>%
e_y_axis(drat) %>%
e_scatter(drat, symbol_size = 15, bind = model, scale = NULL) %>%
e_tooltip(formatter = htmlwidgets::JS("
function(params){
return('<strong>' + params.name +
'</strong><br />x-axis: ' + params.value[0] +
'<br />y-axis: ' + params.value[1]
)}
"))
如您所见,将鼠标悬停在一个点上时会显示车型名称和数值。但是,我不知道如何以相同的方式显示变量名。我知道我可以用它们的名称手动替换“x 轴”和“y 轴”,但我想自动替换。
我检查了documentation of echarts,但是使用{a}
(例如)不起作用。
有什么想法吗?
编辑:我使用 echarts4r 0.3.3
请找到下面的代码:
您需要使用params.seriesName来访问列名
mtcars %>%
tibble::rownames_to_column("model") %>%
e_charts(wt) %>%
e_scatter(mpg, qsec, bind = model, scale = NULL) %>%
e_tooltip(formatter = htmlwidgets::JS("
function(params){
return('<strong>' + params.seriesName +
'</strong><br />wt: ' + params.value[0] +
'<br />mpg: ' + params.value[1] + '<br> qsec:' + params.value[2]
)}
"))
我正在尝试了解我是否正在处理您可能真正需要的东西... 我想你想要灵活名称的原因是让它有一个单独的功能,以便在你需要时给你打电话......
那么这个怎么样?它使用一种变通方法来避免名称(在您将字符串而不是未加引号的名称传递给函数的意义上)。但是,如果您需要使用名称,我们可以尝试其他方式。
library(echarts4r)
library(tibble)
plot_escatter <- function(df, x_axis, y_axis, bind){
df %>%
e_charts_ (x_axis) %>%
e_y_axis_ (y_axis) %>%
e_scatter_(y_axis, symbol_size = 15, bind = bind, scale = NULL) %>%
e_tooltip(formatter = htmlwidgets::JS(paste0("
function(params){
return('<strong>' + params.name + '</strong><br />", x_axis, ": ' + params.value[0] +
'<br />", y_axis, ": ' + params.value[1]
)}
")))
}
mtcars %>%
rownames_to_column("model") %>%
plot_escatter("mpg", "drat", "model")
e_tooltip 传递的参数中不存在您要求的内容。
您可以通过将 params
传递给 console.log
并在浏览器中检查此日志来访问它们:
mtcars %>%
rownames_to_column("model") %>%
e_charts(mpg) %>%
e_y_axis(drat) %>%
e_scatter(drat, symbol_size = 15, bind = model, scale = NULL) %>%
e_tooltip(formatter = htmlwidgets::JS("
function(params){
var obj_str = JSON.stringify(params);
console.log(obj_str);
return('<strong>' + params.name +
'</strong><br />' + params.seriesName + ': ' + params.value[0] +
'<br />mpg: ' + params.value[1]
)}
"))
您会注意到 x-axis 名称在 params.seriesName
下,但找不到 y-axis 名称。
这是一个示例,如果您要检查 console.log
的 params
:
{"componentType":"series",
"componentSubType":"scatter",
"componentIndex":0,
"seriesType":"scatter",
"seriesIndex":0,
"seriesId":"\u0000drat\u00000",
"seriesName":"drat",
"name":"Ford Pantera L",
"dataIndex":9,
"data":{"value":[15.8,4.22],
"name":"Ford Pantera L"},
"value":[15.8,4.22],
"color":"#c23531",
"dimensionNames":["x","y"],
"encode":{"x":[0],"y":[1]},
"marker":"<span style=\"display:inline-block;
margin-right:5px;
border-radius:10px;
width:10px;height:10px;
background-color:#c23531;\"></span>",
"$vars":["seriesName","name","value"]
}
在这种情况下,下面@Edo的paste0
做法似乎很合理。