悬停散点图时显示变量名称

时间:2020-08-10 16:23:07

标签: javascript r echarts

以下是由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

3 个答案:

答案 0 :(得分:1)

我试图了解我是否正在使用您可能真正需要的东西... 我以为您想要弹性名称的原因是将其具有独立的功能,以便在需要时调用您...

那呢?它使用一种变通方法来避免使用名称(在某种意义上,您是将字符串而不是未引用的名称传递给函数)。但是,如果您需要使用名称,我们可以尝试其他方法。

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")

答案 1 :(得分:1)

您要的东西在为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轴名称位于params.seriesName下,但未找到y轴名称。

下面是一个示例,显示了如果您要检查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方法似乎非常合理。

答案 2 :(得分:-1)

请在下面找到代码:

您需要使用 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]   
              )} 
        ")) 
相关问题