6

I have a code that uses the plotly and ggplot2. When I hover the info the information inside is duplicated meaning that it show 2 same TrendName Info lines for all of the graphs. for example this is what it is showing in the hover info

Month_Names: 2011-05 Actual_volume: 56488 TrendName: 2010-11 - 2017-01 TrendName: 2010-11 - 2017-01

How do I show only 1 TrendName? Thanks

Here is my code

library(ggplot2)
library(dplyr)
library(tidyr)
library(plotly)

Month_Names <- c("2010-11","2010-12",
             "2011-01","2011-02","2011-03","2011-04","2011-05","2011-06","2011-07","2011-08","2011-09","2011-10","2011-11","2011-12",
             "2012-01","2012-02","2012-03","2012-04","2012-05","2012-06","2012-07","2012-08","2012-09","2012-10","2012-11","2012-12",
             "2013-01","2013-02","2013-03","2013-04","2013-05","2013-06","2013-07","2013-08","2013-09","2013-10","2013-11","2013-12",
             "2014-01","2014-02","2014-03","2014-04","2014-05","2014-06","2014-07","2014-08","2014-09","2014-10","2014-11","2014-12",
             "2015-01","2015-02","2015-03","2015-04","2015-05","2015-06","2015-07","2015-08","2015-09","2015-10","2015-11","2015-12",
             "2016-01","2016-02","2016-03","2016-04","2016-05","2016-06","2016-07","2016-08","2016-09","2016-10","2016-11","2016-12",
             "2017-01")
Actual_volume <- c(54447,57156,
               52033,49547,58718,53109,56488,60095,54683,60863,56692,55283,55504,56633,
               53267,52587,54680,55569,60013,56985,59709,61281,54188,59832,56489,55819,
               59295,52692,56663,59698,61232,57694,63111,60473,58984,64050,54957,63238,
               59460,54430,58901,61088,60496,62984,66895,62720,65591,67815,58289,72002,
               61054,60329,69283,68002,63196,72267,71058,69539,71379,70925,68704,76956,
               65863,70494,77348,70214,74770,77480,69721,83034,76761,77927,79768,81836,
               75381)

df_data <- data.frame(Month_Names, Actual_volume) 

trendDateRange1 <- c("2010-11-01", "2017-01-31")
trendDateRange2 <- c("2012-01-01", "2012-12-31")
trendDateRange3 <- c("2013-01-01", "2013-12-31")
numoftrends <- 3

trends <- data_frame(Start = c("2010-11", "2012-01", "2013-01"),
                 End = c("2017-01", "2012-12", "2013-12"))
combined_data <- df_data %>%
                 crossing(trends) %>%
                 mutate(Month_Names = as.character(Month_Names),
TrendName = paste(Start, End, sep = "-")) %>%
            filter(Month_Names >= Start,
                  Month_Names <= End)

p <- ggplot(combined_data, aes(Month_Names, y = Actual_volume,
                           group = TrendName,
                           color = TrendName)) +
     geom_line() +
     labs(x=" ",y=" ") +
     labs(title = "New plot title") +
     theme(plot.title = element_text(family = "Arial", color="blue", 
                              size=18),
     legend.title = element_blank(),
     axis.text.x = element_text(angle = 45, hjust = 1)
     )

ggplotly(p) %>% 
     layout(title = "New plot title", 
            legend = list(orientation = "h",x = 0.25, y = -.75),  
            annotations = list()
           ) 

1 Answer 1

16

You've 4 variables in the aes when you build your ggplot object. When you use ggplotly it will use all mapped aesthetics in the tooltip.

To remove the duplicate caused by group and color you need to specify what items to use in the tooltip as a character vector. (Note the spelling on colour, and you can also use group instead).

ggplotly(p, tooltip = c("x","y","colour")) %>% 
  layout(title = "New plot title", 
         legend = list(orientation = "h",x = 0.25, y = -.75)
  ) 
Sign up to request clarification or add additional context in comments.

1 Comment

Thanks Jake Kaupp. I didn't know since I am new to R, ggplot2 and plotly. Have a great day!

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.