2017-11-22 8 views
1

は、私は次の例のプロットがあります:あなたがわかるように、彼らは伝説にそうであるようにRのgeom_errorbar()を使用してエラーバーが表示される順序を逆にするにはどうすればよいですか?

test <- data.frame("Factor" = as.factor(c("O", "C", "A")), 
         b = c(0.18, .34, .65, -.13, .38, .26), 
         lower95 = c(-.1, .09, .34, -.52, .10, -.02), 
         upper95 = c(.48, .58, .98, .26, .67, .56), 
         group = factor(c("Experiment 1","Experiment 2"))) 

test$Factor <- factor(test$Factor, as.character(test$Factor)) 
test$group <- factor(test$group, as.character(test$group)) 

ggplot(test, aes(Factor, b, colour = group)) + 
    geom_errorbar(aes(ymin = lower95, ymax = upper95), 
      size = 1, 
      width = .5, 
      position = 'dodge') + 
    geom_hline(yintercept = 0) + 
    ylim(-1.25, 1.25) + 
    coord_flip() + 
    theme_bw() + 
    ggtitle("Title") + 
    theme(
axis.text=element_text(size = 20), 
axis.title=element_text(size = 18), 
plot.title = element_text(size = 20, face = "bold"), 
axis.text.y=element_text(size = 12) 
) 

を、エラーバーは(上から下へ)逆の順序で表示されます。実験1のエラーバーが実験2のエラーバーの上に表示されます。

私は

ggplot(test, aes(Factor, b, colour = forcats::fct_rev(groups) 

を試してみましたが、しかし、これはグループの順序は伝説ではなく、伝説、うまくいくものですの色の順にをラベル反転。私はデータフレームにそれらを入力する順序を逆にしてみましたが、これは問題を解決しません。

私はいくつかの助けに感謝します!

+0

'fct_rev'コードに加えて、' + guides(color = guide_legend(reverse = TRUE)) 'で凡例を逆順にすることができます。そうすることで、伝説とプロットが視覚的に一致し、「実験1」が最初に来ます。 – aosmith

答えて

1

プロットの順番が変更されますが、見たとおり、凡例の順序も変更されます。 groupのレベルを反転することに加えて、reverseの引数を使用して凡例が表示される順序を逆にすることができます(guide_legend)。

ggplot(test, aes(Factor, b, colour = forcats::fct_rev(group))) + 
    geom_errorbar(aes(ymin = lower95, ymax = upper95), 
        size = 1, 
        width = .5, 
        position = 'dodge') + 
    geom_hline(yintercept = 0) + 
    ylim(-1.25, 1.25) + 
    coord_flip() + 
    theme_bw() + 
    ggtitle("Title") + 
    theme(
      axis.text=element_text(size = 20), 
      axis.title=element_text(size = 18), 
      plot.title = element_text(size = 20, face = "bold"), 
      axis.text.y=element_text(size = 12) 
    ) + 
    guides(color = guide_legend(reverse = TRUE)) 

enter image description here

あなたは伝説の名のような他のスケールの要素を制御するscale_color_discretescale_color_manualを使用している場合は、guidesを経由してそこguide_legendの代わりに使用することができます。

+ 
scale_color_discrete(name = "Experiment", guide = guide_legend(reverse = TRUE)) 
0

これはどういう意味ですか?

test$Factor <- factor(test$Factor, levels = rev(levels(test$Factor))); 
test$group <- factor(test$group, levels = rev(levels(test$group))); 

ggplot(test, aes(Factor, b, colour = group)) + 
    geom_errorbar(aes(ymin = lower95, ymax = upper95), 
      size = 1, 
      width = .5, 
      position = 'dodge') + 
    geom_hline(yintercept = 0) + 
    ylim(-1.25, 1.25) + 
    coord_flip() + 
    theme_bw() + 
    ggtitle("Title") + 
    theme(
axis.text=element_text(size = 20), 
axis.title=element_text(size = 18), 
plot.title = element_text(size = 20, face = "bold"), 
axis.text.y=element_text(size = 12) 
) 

enter image description here

私はあなたにもtest$Factorの順序を逆にするかどうかに完全に明確ではありませんよ。あなたが何をしているかに応じて、対応する行をコメントするだけです。

+0

これは実験2のバー[実験1のバーの上](https://imgur.com/a/h8Uy1)をまだ持っているようです。 この画像の赤いバー(実験1に対応するバー)が緑のバーの上に表示されます。 – Dave

+0

しかし、実験1の誤差バー(緑色)*は実験2の誤差バー(赤色)より上です*添付のプロットを参照してください。代わりに*色*を交換したいですか? –

+0

申し訳ありませんが私は明確でない場合。私は実験1が実験2の前にエラーバーの順序と凡例に列挙されている順番の両方で来ることを望んでいました。 – Dave

関連する問題