R:更新悬停文本

R:更新悬停文本,r,ggplot2,dplyr,plotly,data-visualization,R,Ggplot2,Dplyr,Plotly,Data Visualization,我正在使用R编程语言。我使用plotly库制作了以下交互式图形: library(dplyr) library(ggplot2) library(shiny) library(plotly) library(htmltools) library(dplyr) #generate data set.seed(123) ###### var = rnorm(731, 85,25) date= seq(as.Date("2014/1/1"), as.Date("20

我正在使用R编程语言。我使用plotly库制作了以下交互式图形:

library(dplyr)
library(ggplot2)
library(shiny)
library(plotly)
library(htmltools)

library(dplyr)
#generate data
set.seed(123)

######

var = rnorm(731, 85,25)
date= seq(as.Date("2014/1/1"), as.Date("2016/1/1"),by="day")
data = data.frame(var,date)

vals <- 90:100
combine <- vector('list', length(vals))
count <- 0
for (i in vals) {
    
    data$var_i = i
    data$new_var_i = ifelse(data$var >i,1,0)
    
    #percent of observations greater than i (each month)
    aggregate_i = data %>%
        mutate(date = as.Date(date)) %>%
        group_by(month = format(date, "%Y-%m")) %>%
        summarise( mean = mean(new_var_i))
    
    #combine files together
    
    aggregate_i$var = i
    aggregate_i$var = as.factor(aggregate_i$var)
    
    count <- count + 1
    combine[[count]] <- aggregate_i
    
}

result_2 <- bind_rows(combine)
result_2$group = "group_b"
result_2$group = as.factor(result_2$group)





graph <-ggplot(result_2, aes(frame = var, color = group)) + geom_line(aes(x=month, y=mean, group=1))+ theme(axis.text.x = element_text(angle=90)) + ggtitle("title") + facet_wrap(. ~ group)

graph = ggplotly(graph)

有人能告诉我如何解决这个问题吗


谢谢

如果你想完全控制你的hoverinfo,最好是创建一个plotly图表而不是ggplot,然后使用
ggplotly()
。如果结果_2中只有一个组,如上面的示例所示,则可以使用

result_2 %>%
  plot_ly(x=~month, y=~mean, color=~group) %>%
  group_by(group) %>%
  add_lines(frame=~var,hoverinfo = "text",
            text = ~ paste0("Month: ",month, "<br>",
                            "Mean: ", mean, "<br>",
                            "Total: ", mean(mean))) %>%
  layout(title = list(text = "title"),
         xaxis = list(tickangle = -90, tickformat = "%m-%Y"))
结果\u 2%>%
绘图(x=~月,y=~平均值,颜色=~组)%>%
分组依据(分组)%>%
添加_行(frame=~var,hoverinfo=“text”,
text=~paste0(“月:”,月,
“, “平均值:”,平均值,
“, “总计:”,平均值(平均值))%>% 布局(标题=列表(text=“title”), xaxis=list(tickagle=-90,tickformat=“%m-%Y”))
或者,如果结果_2中有>1个组,并且您希望按照ggplot中的指示按组刻面,则可以执行以下操作:

result_2 %>%
  group_by(group) %>%
  do(
    plot = plot_ly(data =., x=~month, y=~mean, color=~group) %>%
      add_lines(frame=~var,hoverinfo = "text",
                text = ~ paste0("Month: ",month, "<br>",
                                "Mean: ", mean, "<br>",
                                "Total: ", mean(mean))) %>%
      layout(title = list(text = "title"),
             xaxis = list(tickangle = -90, tickformat = "%m-%Y"))
  ) %>%
  subplot(shareX = TRUE, shareY = FALSE, nrows = 2) 
结果\u 2%>%
分组依据(分组)%>%
做(
plot=plot\u ly(数据=,x=~月,y=~平均值,颜色=~组)%>%
添加_行(frame=~var,hoverinfo=“text”,
text=~paste0(“月:”,月,
“, “平均值:”,平均值,
“, “总计:”,平均值(平均值))%>% 布局(标题=列表(text=“title”), xaxis=list(tickagle=-90,tickformat=“%m-%Y”)) ) %>% 子批(shareX=TRUE,shareY=FALSE,nrows=2)
但是如果您只有一个组(因此提供了两个选项),那么这将不起作用。
您可以在
text=~paste0()
部分中创建任何函数并编写任何需要的内容,它将显示在您的hoverinfo中。

谢谢您的回答!这工作做得很好!现在我将花一些时间试图理解您使用的代码逻辑。过去几天我一直在研究这个问题:。。。。如果可能的话,如果你有时间的话,你能看一下吗?非常感谢你的帮助
result_2 %>%
  plot_ly(x=~month, y=~mean, color=~group) %>%
  group_by(group) %>%
  add_lines(frame=~var,hoverinfo = "text",
            text = ~ paste0("Month: ",month, "<br>",
                            "Mean: ", mean, "<br>",
                            "Total: ", mean(mean))) %>%
  layout(title = list(text = "title"),
         xaxis = list(tickangle = -90, tickformat = "%m-%Y"))
result_2 %>%
  group_by(group) %>%
  do(
    plot = plot_ly(data =., x=~month, y=~mean, color=~group) %>%
      add_lines(frame=~var,hoverinfo = "text",
                text = ~ paste0("Month: ",month, "<br>",
                                "Mean: ", mean, "<br>",
                                "Total: ", mean(mean))) %>%
      layout(title = list(text = "title"),
             xaxis = list(tickangle = -90, tickformat = "%m-%Y"))
  ) %>%
  subplot(shareX = TRUE, shareY = FALSE, nrows = 2)