R plotly:使用ggplotly()时如何保持ggplot2 geom_bar()的宽度参数

时间:2017-03-15 14:58:12

标签: r ggplot2 plotly

出于某种原因,当使用ggplot2 geom_bar函数将plotly条形图(ggplotly)转换为交互式地图时,{{ 1}}" force"即使指定了ggplotly参数,也要粘在一起:

width

enter image description here

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) 的默认颜色顺序(尽管保留了图例中的顺序......),但我可以处理它。

任何想法都告诉ggplot2不要把我的酒吧粘在一起,比如默认 ggplotly行为?

1 个答案:

答案 0 :(得分:2)

  

任何想法都告诉ggplotly不要把我的酒吧粘在一起,比如说   默认的ggplot2行为?

ggplotly将bargap设置为0,您可以通过layout

设置为所需的值
ggplotly(p) %>% layout(bargap=0.15)

enter image description here

  

由于某种原因,它还会反转ggplot2s的默认颜色顺序   (虽然保持传奇中的顺序......),但我可以处理这个。

让我们也解决这个问题。之后您可以通过翻转条形并反转图例来更改顺序。

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