2017-06-23 11 views
0

私はplotlyのWebサイト(https://plot.ly/ggplot2/geom_bar)からコード例をコピーしましたが、グラフはフィルタリングされたときの例とは異なります。どのように私は私のようにそのような形を変えることができるようにすることができますか?Rプロットの凡例フィルタ

コード:

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) 

ウェブから:0​​Plotly website
マイRStudioビューア:

R Studio Viewer

+0

あなたはフィルタリングとはどういう意味ですか。 – RUser

+0

変数 'F2'はプロットで除外され、凡例をクリックしてフィルタリングされます –

+0

使用したコードとともに質問を編集します – RUser

答えて

1

あなたは例のコードによって生成されたデータを比較し、公開している場合2つの違いを見ることができます。あなたは、トレースを切り替える場合

  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

関連する問題