2017-03-15 3 views
0

Aus irgendeinem Grunde, wenn in R einen ggplot2 Balkendiagramm (geom_bar) in ein interaktives Plot Umwandlung mit plotly ‚s ggplotly Funktion, ggplotly„Kräften "die Stangen aneinander haften, auch wenn der width Parameter angegeben wird:R plotly: Wie Breitenparameter von ggplot2 geom_bar halten(), wenn ggplotly mit()

library(plotly) 
library(ggplot2) 

DF <- read.table(text="Rank F1  F2  F3 
1 500 250 50 
2 400 100 30 
3 300 155 100 
4 200 90  10", header=TRUE) 

library(reshape2) 
DF1 <- melt(DF, id.var="Rank") 

p <- ggplot(DF1, aes(x = Rank, y = value, fill = variable)) + 
    geom_bar(stat = "identity") 

ggplotly(p) 

enter image description here

p <- ggplot(DF1, aes(x = Rank, y = value, fill = variable)) + 
    geom_bar(stat = "identity", width = 0.4) 

ggplotly(p) 

enter image description here

Es rückt auch ggplot2 s Standardfarben Reihenfolge aus irgendeinem Grund (obwohl die Reihenfolge in der Legende ...), aber ich kann damit umgehen.

Irgendwelche Idee heiß zu ggplotly zu sagen, um meine Bars nicht zusammen zu stecken, wie der Standard ggplot2 Verhalten?

Antwort

2

Jede Idee, heiße ggplotly zu sagen, nicht meine Stäbe zusammenhalten, wie die Standard ggplot2 Verhalten?

ggplotly setzt bargap-0, könnten Sie auf den gewünschten Wert eingestellt über layout

ggplotly(p) %>% layout(bargap=0.15) 

enter image description here


Es ist auch ggplot2s Standardfarben bestellen aus irgendeinem Grund umkehrt (obwohl die Reihenfolge in der Legende bleibt ...), aber ich c ein Griff dies.

Lassen Sie uns das auch behoben. Sie können die Reihenfolge nachträglich ändern, indem Sie die Balken spiegeln und die Legende umkehren.

gp <- ggplotly(p) %>% layout(bargap = 0.15, legend = list(traceorder = 'reversed')) 

traces <- length(gp[['x']][[1]]) 
for (i in 1:floor(traces/2)) { 
    temp <- gp[['x']][[1]][[i]] 
    gp[['x']][[1]][[i]] <- gp[['x']][[1]][[traces + 1 - i]] 
    gp[['x']][[1]][[traces + 1 - i]] <- temp 
} 

enter image description here

+0

Super, danke. Wissen Sie, warum die Farbreihenfolge geändert und wie damit umgegangen wird? Momentan verwende ich die umgekehrte Farbreihenfolge in der ursprünglichen Grafik ggplot2, so bekomme ich die gewünschte Farbreihenfolge - aber das ist eine hässliche Lösung. –

+0

@GioraSimchoni: siehe aktualisierte Antwort für einen alternativen Ansatz –

Verwandte Themen