簡體   English   中英

R plotly:使用ggplotly()時如何保持ggplot2 geom_bar()的寬度參數

[英]R plotly: How to keep width parameter of ggplot2 geom_bar() when using ggplotly()

出於某些原因,在R中使用plotlyggplotly函數將ggplot2條形圖( geom_bar )轉換為交互式圖時,即使指定了width參數, ggplotly “強制”這些條形物粘在一起:

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)

在此處輸入圖片說明

由於某種原因,它也顛倒了ggplot2的默認顏色順序(盡管將順序保留在圖例中...),但是我可以解決這個問題。

有什么好主意告訴ggplotly不要像默認的ggplot2行為那樣把我的酒吧粘在一起嗎?

有什么好主意告訴ggplotly不要像默認的ggplot2行為那樣把我的酒吧粘在一起嗎?

ggplotly設置bargap0 ,你可以設置為通過您的所需值layout

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

在此處輸入圖片說明


由於某種原因,它也反轉了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
}

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM