2017-06-23 74 views
0

我已經從plotly網站(https://plot.ly/ggplot2/geom_bar)拷貝了代碼示例,但圖表的行爲與過濾時的示例行爲不同;我怎樣才能讓我的重塑如此呢?R Plotly圖例過濾

代碼:

library(plotly) 

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") 

p <- ggplotly(p) 

從網站: Plotly website
我RStudio查看器:

R Studio Viewer

+0

你通過濾波的意思。 – RUser

+0

變量'F2'被排除在圖上,通過點擊圖例進行過濾 –

+0

編輯你的問題以及你使用的代碼 – RUser

回答

1

如果你比較由示例代碼和發佈產生的數據密碼,你可以看到兩個區別。

  1. 「錯誤」的圖表已經base
  2. 順序的兩個圖形

爲了防止堆積條形圖從,如果你切換一絲不崩之間的逆轉,你需要以清除base值(並且出於美學原因顛倒了痕跡的順序)。

library(plotly) 

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") 

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

p <- ggplotly(gp) 

for (i in 1:length(p$x$data)) { 
    p$x$data[[i]]$base <- c() 
    tmp <- p$x$data[[i]] 
    p$x$data[[i]] <- p$x$data[[length(p$x$data) - i + 1]] 
    p$x$data[[length(p$x$data) - i + 1]] <- tmp 
} 
p 

enter image description here