2017-03-22 4 views
1

Dies ist meine erste Frage hier, wenn ich einen Fehler beim Posten gemacht habe oder mein Problem zu erklären Ich werde mich freuen, jedes Feedback zu hören.Plotly und ggplot2 hover Text in barplot von R funktioniert nicht

Ich baue ein Werkzeug in R mit Shiny, Ggplot und Plotly. Ich habe ein Beispiel von plotly library, wo ich sehen kann, ist es möglich, einen Tooltip zu haben, wenn Sie ggplot verwenden, um ein Diagramm zu rendern.

meinen Beispielcode folgt:

library(shiny) 
library(ggplot2) 
library(plotly) 
library(dplyr) 
library(reshape) 

ui <- fluidPage(
    plotlyOutput("distPlot") 
) 

server <- function(input, output) { 
    output$distPlot <- renderPlotly({ 
    dat <- data.frame(
    time = factor(c("Lunch","Dinner"), levels=c("Lunch","Dinner")), 
    total_bill = c(14.89, 17.23) 
) 

p <- ggplot(data=dat, aes(x=time, y=total_bill, fill=time)) + 
    geom_bar(stat="identity") 
    p <- p + geom_bar(stat = "identity") 

    ggplotly(p) 
    }) 
} 

shinyApp(ui = ui, server = server) 

Wenn ich den obigen Code verwenden, die Tooltip zeigt nicht, aber wenn ich die Füllung = X2 Parameter entferne die Tooltip angezeigt:

 p <- ggplot(data=dat, aes(x=time, y=total_bill)) + 
    geom_bar(stat="identity") 

In meinem Anwendung Ich muss den Füllparameter haben, um die "Gruppen" zu trennen, die ich durch Farbe habe und die Legende zeige.

Ich habe nach vielen "Workarounds" im Internet gesucht, die Javascript und andere Lösungen verwenden, aber da es ein natives Feature von plotly ist, möchte ich, dass dies einfacher funktioniert.

Vielen Dank im Voraus für jede Hilfe !!

+0

Versuchen 'g <- plotly_build (p)'. Dann schau dir die Struktur von g an, du solltest 'g $ x $ data [[i]] $ text' finden. Schau dir an, was der Wert ist und ändere ihn. – msubbaiah

Antwort

2

Dies ist eine Art eines bekannten Problems, können Sie uns das es zu beheben verwenden:

p <- ggplotly(p) 

for (i in 1:length(p$x$data)){ 
    p$x$data[[i]]$text <- c(p$x$data[[i]]$text, "") 
} 
p 
+0

Hallo @GGamba danke für deine Antwort, die erste Option funktioniert gut, die zweite jedoch nicht. Ich glaube, das ist ein Fehler und ich konnte keine Abhilfe finden. –

Verwandte Themen