2
votes

I'm trying to reproduce the ggplot geom_bar example I found here. The code is rather simple

library(ggplot2)
library(plotly)

dat <- data.frame(
time = factor(c("Lunch","Dinner"), levels=c("Lunch","Dinner")),
total_bill = c(14.89, 17.23))

# No legend, since the information is redundant
ggplot(data=dat, aes(x=time, y=total_bill, fill=time)) +
geom_bar(colour="black", stat="identity") +
guides(fill=FALSE)

ggplotly()

In the ggplot the fill-legend is hidden as expected but the plotly differs from the example:

  • the legend is included
  • the tooltips are not working

Since i expect this to be an issue related to package versions I append my sessionInfo()

R version 3.3.2 (2016-10-31)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1

locale:
[1] LC_COLLATE=German_Austria.1252  LC_CTYPE=German_Austria.1252    LC_MONETARY=German_Austria.1252 LC_NUMERIC=C                    LC_TIME=German_Austria.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] plotly_4.5.6   ggplot2_2.2.1  nvimcom_0.9-19

loaded via a namespace (and not attached):
 [1] Rcpp_0.12.8       tidyr_0.6.0       viridisLite_0.1.3 digest_0.6.10     dplyr_0.5.0       assertthat_0.1    grid_3.3.2        plyr_1.8.4        R6_2.2.0          jsonlite_1.1      gtable_0.2.0      DBI_0.5-1        
[13] magrittr_1.5      scales_0.4.1      httr_1.2.1        lazyeval_0.2.0    tools_3.3.2       htmlwidgets_0.8   purrr_0.2.2       munsell_0.4.3     base64enc_0.1-3   colorspace_1.3-1  htmltools_0.3.5   tibble_1.2 
2
p <- ggplotly();p$x$data[[1]]$text <- c(p2$x$data[[1]]$text, "") ;p$x$data[[2]]$text <- c(p2$x$data[[2]]$text, "") ;p? See stackoverflow.com/questions/41184959/…lukeA
Thanks! This (with p instead of p2) solves the issue with tooltips. Any idea about the legend?supersambo
Filed a bug report on GitHub.Roman Luštrik

2 Answers

1
votes

Solution posted on GitHub posted by bcdunbar says

theme(legend.position = "none") +

translates to legend suppression in ggplotly.

1
votes

I just noticed that the solution referenced by lukeA also offers a way to get rid of the legend by manually disabling it in the ggplotly object. For example like this:

library(ggplot2)
library(plotly)

dat <- data.frame( time = factor(c("Lunch","Dinner"), levels=c("Lunch","Dinner")), total_bill = c(14.89, 17.23))

# No legend, since the information is redundant
p <- ggplot(data=dat, aes(x=time, y=total_bill, fill=time)) + geom_bar(colour="black", stat="identity") + guides(fill=FALSE)
p <- ggplotly(p)


for (i in 1:nrow(dat)){
    p$x$data[[i]]$text <- c(p$x$data[[i]]$text, "") 
    p$x$data[[i]]$showlegend <- FALSE
}
p

Still a dirty solution but it does the job...