For some reason, when converting in R a ggplot2
bar chart ( geom_bar
) into an interactive plot using plotly
's ggplotly
function, ggplotly
"forces" the bars to stick together, even if the width
parameter is specified:
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)
p <- ggplot(DF1, aes(x = Rank, y = value, fill = variable)) +
geom_bar(stat = "identity", width = 0.4)
ggplotly(p)
It also reverses ggplot2
s default colors order for some reason (although keeping the order in the legend...), but I can handle this.
Any idea hot to tell ggplotly
to not stick my bars together, like the default ggplot2
behavior?
Any idea hot to tell ggplotly to not stick my bars together, like the default ggplot2 behavior?
ggplotly sets bargap
to 0
, you could set to your desired value via layout
ggplotly(p) %>% layout(bargap=0.15)
It also reverses ggplot2s default colors order for some reason (although keeping the order in the legend...), but I can handle this.
Let's get that fixed as well. You can change the order afterwards by flipping the bars and reversing the legend.
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
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.