R plotly Проблемы с зависанием текста в цикле трассировки - PullRequest
0 голосов
/ 04 января 2019

После этого сообщения и этого ответа У меня есть дополнительный вопрос:

library(plotly)      

# Create data
dat=data.frame(group = factor(rep(LETTERS[1:4], each=10)), my_x = rep(1:10, 4), my_y = rnorm(40))
str(dat)

# Let's do a first plot
p<-plot_ly(dat)


# Add a trace for each group using a loop

for(i in 1:length(levels(dat$group))){

subs <- subset(dat, group == levels(dat$group)[i])

p<-add_trace(p = p,
             data = subs,
             y=~my_y, 
             x=~my_x , 
             name=levels(dat$group)[i],
             type="scatter", 
             mode="markers+lines",
             hoverinfo="text",
             text=~paste0(levels(dat$group)[i], ": x=", round(my_x, 2), "y=", round(my_y, 2)))

}

p

Может кто-нибудь сказать мне, почему, когда я наводю курсор на данныев точках, каждая из меток показывает правильные значения x и y, однако все они помечены как «D:», в то время как легенда показывает линии, похожие на A, B, C и D. Я бы хотел, чтобы текст при наведении указывалправильно.

1 Ответ

0 голосов
/ 04 января 2019

Это может быть проблема с использованием ~ в text.Попробуйте создать «текст» с использованием данных «subs» отдельно, а затем передать его на add_trace

 p <- plot_ly()
 lvls <- levels(dat$group)
 for(i in seq_along(lvls)){
   subs <- droplevels(subset(dat, group == lvls[i]))
   text1 <- with(subs, paste0(lvls[i], ": x=", round(my_x, 2), "y=", round(my_y, 2)))
   p <- add_trace(p, 
                  data = subs,
                  x = ~my_x, 
                  y = ~my_y,
                  name = lvls[i],                  
                  type = 'scatter', 
                  mode = 'markers+lines', 
                  hoverinfo='text',
                  text=text1)
 }

 p

-output enter image description here

...