为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

holdtom 2022-12-29 15:20:55
{echarts4r}这是来自GitHub 上这个答案的情节: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 轴”,但我想自动执行。我检查了关于这个的 echarts 的文档,但是使用{a}(例如)不起作用。任何的想法?编辑:我用echarts4r 0.3.3
查看完整描述

3 回答

?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

您要求的东西不存在于为 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.logfor时会发现的示例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"]

}

在这种情况下,paste0下面@Edo 的做法似乎很合理。


查看完整回答
反对 回复 2022-12-29
?
MYYA

TA贡献1868条经验 获得超4个赞

我试图了解我是否在做你可能真正需要的东西......我想你想要灵活名称的原因是让它有一个单独的功能,以便在你需要时给你打电话......


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


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


查看完整回答
反对 回复 2022-12-29
?
慕容3067478

TA贡献1773条经验 获得超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]   

              )} 

        ")) 


查看完整回答
反对 回复 2022-12-29
  • 3 回答
  • 0 关注
  • 234 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号