使用geom_bar缺少ggplotly的工具提示和冗余图例

时间:2017-01-03 13:54:35

标签: r ggplot2 plotly

我正在尝试重现我找到的here ggplot geom_bar示例。 代码很简单

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()

在ggplot中,fill-legend按预期隐藏,但情节与示例不同:

  • 包含图例
  • 工具提示无法正常工作

由于我认为这是与软件包版本相关的问题,因此我附加了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 个答案:

答案 0 :(得分:1)

我刚注意到solution引用的lukeA也提供了一种通过在ggplotly对象中手动禁用它来摆脱图例的方法。例如:

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

仍然是一个肮脏的解决方案,但它完成了工作...

答案 1 :(得分:0)

bcdunbar发布的GitHub上发布的解决方案

theme(legend.position = "none") +

转换为ggplotly中的图例抑制。