2017-05-10 59 views
0

我有一個使用plotly和ggplot2的代碼。當我將信息懸停時,裏面的信息會被複制,這意味着它會爲所有圖表顯示2個相同的TrendName信息行。例如這是它顯示在懸停信息用ggplot2繪製重複懸停信息

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

如何我只顯示1個TrendName?由於

這裏是我的代碼

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

當你建立你的ggplot對象您在aes 4個變量。當您使用ggplotly時,它將使用工具提示中的所有映射美學。

要刪除由groupcolor引起的重複,您需要指定在工具提示中使用哪些項目作爲字符向量。 (請注意顏色上的拼寫,而且您也可以使用group代替)。

ggplotly(p, tooltip = c("x","y","colour")) %>% 
    layout(title = "New plot title", 
     legend = list(orientation = "h",x = 0.25, y = -.75) 
) 
+0

謝謝傑克考普。我不知道,因爲我是R,ggplot2和plotly的新手。祝你有美好的一天! – aotearoa