2017-06-20 8 views
0

単一の値(ここではbm)でいくつかの変数(ここではX1X2)の分布を比較したいと考えています。問題は、これらの変数が1つのボックスプロットを使用するには多すぎる(約1ダース)ということです。 enter image description hereboxplotsを単一の値と比較する

さらに、1つのプロットを使用するにはレベルが異なります。私は物事をより組織的にするためにファセットを使用する必要があります。enter image description here

しかし、このプロットでX1X2で単一の値である私のベンチマークカテゴリ(bm)を、X1に表示され、X2に複数の値を持っているように見えるしません。 。私はそれが最初のプロットにあるこの緑の線だけであることを望みます。それがなぜ変わるのか?良い回避策はありますか? facet_wrap/facet_gridのオプションを試しましたが、正しい結果が得られませんでした。

また、bmの棒グラフとboxplotの3つの空のカテゴリを組み合わせてみました。しかしまず第一にそれはひどく見え、第二にそれは同様にファセットにねじ込まれてしまった。基本的にどのような作業でも役立ちます。最小限の例を作成するためのコードの下に

がここに表示される:

# Creating some sample data & loading libraries 
library(ggplot2) 
library(RColorBrewer) 
set.seed(10111) 
x=matrix(rnorm(40),20,2) 
y=rep(c(-1,1),c(10,10)) 
x[y==1,]=x[y==1,]+1 
x[,2]=x[,2]+20 
df=data.frame(x,y) 

# creating a benchmark point 
benchmark=data.frame(y=rep("bm",2),key=c("X1","X2"),value=c(-0.216936,20.526312)) 
# melting the data frame, rbinding it with the benchmark 
test_dat=rbind(tidyr::gather(df,key,value,-y),benchmark) 

# Creating a plot 
p_box <- ggplot(data = test_dat, aes(x=key, y=value,color=as.factor(test_dat$y))) + 
    geom_boxplot() + scale_color_manual(name="Cluster",values=brewer.pal(8,"Set1")) 

# The first line delivers the first plot, the second line the second plot 
p_box 
p_box + facet_wrap(~key,scales = "free",drop = FALSE) + theme(legend.position = "bottom") 
+0

は_ _「めちゃくちゃます」:とにかく

は、私があなたの代わりに単一の値の箱ひげ図でハッキングの、ベンチマークのためgeom_hlineを使用する場合は、プロットが改善するだろうとお考え下さいあなたが気に入らないこと、そしてあなたが何を求めているのかを明示してください。また、コードの可読性は、一貫したスペーシングによって本当に助けになります。 – Axeman

+0

ありがとうございます。私はその質問を編集した。今でもコードを編集します。一貫性のあるスペーシングで何を意味するのかよくわかりませんが。 – 5th

答えて

1

を問題は色だけaes内部test_dat$yの使用をintあります。 をaesに使用しないと、ggplotがうまく動作しません。

library(ggplot2) 
library(RColorBrewer) 

ggplot(tidyr::gather(df,key,value,-y)) + 
    geom_boxplot(aes(x=key, y=value, color=as.factor(y))) + 
    geom_hline(data = benchmark, aes(yintercept = value), color = '#4DAF4A', size = 1) + 
    scale_color_manual(name="Cluster",values=brewer.pal(8,"Set1")) + 
    facet_wrap(~key,scales = "free",drop = FALSE) + 
    theme(legend.position = "bottom") 

+0

どうもありがとう。 didntは 'geom_hline'を知っています。基本的にコードの行を保存すると、私は困ってしまいました。 'facet'と同様の問題を抱えている他の人のための注意: ' test_dat [、 "y"] 'を使うとファセットが壊れ、' ggplot'も@GGambaの権利を理解していると思われます。 – 5th

+0

ggplotは、['非標準評価'](http://adv-r.had.co.nz/Computing-on-the-language.html)という名前のものを使用しています。スタンドアロンのオブジェクト(これはcの単純化です)。この規範からの逸脱はトラブルを引き起こす – GGamba

関連する問題