微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

geom_label() 等效于 {echarts4r}

如何解决geom_label() 等效于 {echarts4r}

问题

我正在尝试使用 {echarts4r} 生成可视化,其中涉及绘制带有显示在图表本身上的标签的点,其中标签与点的位置无关。这听起来应该很简单,但到目前为止我还没有找到任何可行的方法来做到这一点,我开始怀疑它是否可能。

期望的输出

这是一个最小的例子。我将使用 {ggplot2} 来演示我(大致)想要重现的内容

data <- data.frame(
  date_eaten = as.Date(c("2020-01-01","2020-01-02","2020-01-03")),tastiness = c(5,7,10),fruit = c("apple","orange","mango")
)
data
#>   date_eaten tastiness  fruit
#> 1 2020-01-01         5  apple
#> 2 2020-01-02         7 orange
#> 3 2020-01-03        10  mango

library(ggplot2)

ggplot(data,aes(x = date_eaten,y = tastiness,label = fruit)) +
  geom_point() +
  geom_text(nudge_y = 0.2)

ggplot2 example

尝试使用 e_labels()

这种方法在视觉上正是我想要的,但是,似乎没有选项可以指定从哪些列中获取标签

library(echarts4r)

data %>% 
  e_chart(date_eaten) %>% 
  e_scatter(tastiness,symbol_size = 10) %>% 
  e_labels()

echarts4r try #1

尝试使用 e_mark_point()

此选项允许进行更多自定义,但这并不是一个真正可行的解决方案,因为它非常笨重,并且没有严格“链接回”到原始数据:

data %>% 
  e_chart(date_eaten) %>% 
  e_scatter(tastiness,symbol_size = 10) %>% 
  e_mark_point(data = list(
    xAxis = as.Date("2020-01-01"),yAxis = 5,value = "apple"
  )) %>% 
  e_mark_point(data = list(
    xAxis = as.Date("2020-01-02"),yAxis = 7,value = "orange"
  )) %>% 
  e_mark_point(data = list(
    xAxis = as.Date("2020-01-03"),yAxis = 10,value = "mango"
  ))

echarts4r try #2

解决方法

我认为这是解决方案。目前我不确定它是如何工作的,因为文档有点有限,但它似乎有效:

data %>% 
  e_chart(date_eaten) %>% 
  e_scatter(tastiness,symbol_size = 10,bind = fruit) %>% 
  e_labels(formatter = htmlwidgets::JS("
    function(params) {
      return(params.name)
    }
  "))

echarts solution

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。