R:更新悬停文字 [英] R: Updating Hover Text

查看:48
本文介绍了R:更新悬停文字的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I am using the R programming language. I made the following interactive graph using the plotly library:

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)

当用户将鼠标移到图形上的任意点时,将显示以下信息(悬停文字):

When the user moves the mouse over any point on the graph, the following information is displayed (hover text):

我正在尝试将更多信息添加到悬停文本中.例如:

I am trying to add more information to the hover text. For example:

result_2$tot = mean(result_2$mean)

> head(result_2)
# A tibble: 6 x 5
  month    mean var   group     tot
  <chr>   <dbl> <fct> <fct>   <dbl>
1 2014-01 0.387 90    group_b 0.364
2 2014-02 0.429 90    group_b 0.364
3 2014-03 0.452 90    group_b 0.364
4 2014-04 0.367 90    group_b 0.364
5 2014-05 0.355 90    group_b 0.364
6 2014-06 0.433 90    group_b 0.364

但是,当我使用此 result_2 文件制作新图形时,新信息不会出现在悬停文本中:

Yet, when I make a new graph using this result_2 file, the new information does not appear in the hover text:

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)

#view graph

graph

有人可以帮我解决这个问题吗?

Can someone please shoe me how to fix this problem?

谢谢

推荐答案

如果要完全控制hoverinfo,实际上最好创建一个绘图图表而不是ggplot,然后使用 ggplotly().如果如上例所示,在result_2中只有一组,则可以使用

If you want full control of your hoverinfo its actually best to create a plotly chart rather than a ggplot and then use ggplotly(). If you have only one group in result_2 as in your example above you can use

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中有1个小组,您可以按照ggplot中的说明按小组进行操作:

or if you have > 1 group in result_2 and you want to facet by group as indicated in your ggplot you can do:

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) 

但是,如果您只有一个组,那么这将不起作用,因此提供了两个选项.您可以在 text =〜paste0()部分中创建任何函数并编写所需的任何内容,它将显示在您的hoverinfo中.

But this won't work if you have only one group hence the two options provided. You can create any function and write anything you want in the text = ~paste0() part and it will show up in your hoverinfo.

这篇关于R:更新悬停文字的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆