2016-07-19 10 views
1

考えるデータを強調します。 overplottingを避けるためにgeom_jitter()を使用してまず、簡単な1:はプロットにわたって一定のジッタを持ついくつかのポイント(ggplot2)このような

myseed=101 
set.seed(myseed) 
p <- ggplot(dr, aes(x=X,y=Y,colour=Y,na.rm=T)) + 
    theme_bw() + 
    geom_jitter(alpha=0.7,width=0.5,na.rm=T) + 
    scale_colour_gradient("Y", low="#5edcff", high="#035280") + 
    stat_summary(fun.y = "mean", fun.ymin = "mean", fun.ymax= "mean", size=0.3,width=0.33, geom = "crossbar") 
plot(p) 

Plot 1

その後、私は5つの特定のデータポイントを強調したい2番目のプロットインチ私はset.seedを使って同じ方法でggplotジッタを作成してから、強調表示される点だけを持つ別の層を追加することができます。そうではありません:赤い点は、別の場所に現れるという効果で、新たにジッタを付けられます。私が欲しいもの

set.seed(myseed) 
pm <- p + geom_jitter(colour="red",data=filter(dr, highlight == 1),width=0.5,size=2) 
plot(pm) 

Plot 2

は、プロット2は、(データフレーム内で識別)5点が赤で強調表示されていることを唯一の違いは、正確にプロット1のようになる持っています。

私は別のプロットで強調表示されたポイントを追加している可能性があると考えました。 「ハイライト」要素を最初からマップするとどうなりますか?どちらか動作していないよう

set.seed(myseed) 
p <- ggplot(dr, aes(x=X,y=Y,colour=Y,fill=highlight)) + 
    theme_bw() + 
    geom_jitter(alpha=0.7,width=0.5) + 
    stat_summary(fun.y = "mean", fun.ymin = "mean", fun.ymax= "mean",  size=0.3,width=0.33, geom = "crossbar") 
plot(p) 

Plot 3

。私はおそらく何かを見落としているか、間違った足で始めるだろうが、それを働かせることはできない。

P.S.私はthisthisthisのような先の質問を見てきましたが、私の質問に直接答えません。

答えて

1

を使用し、fillアプローチが右方向でした。ただし、fillは、21-25の図形に対してのみ機能するため、目的の結果が表示されませんでした。すべてのポイントと

グラフ:強調表示されたポイントで

myseed=101 
set.seed(myseed) 
p <- ggplot(dr, aes(x=X,y=Y,colour=Y)) + 
    theme_bw() + 
    geom_jitter(alpha=0.7,width=0.5, size = 3) + 
    scale_colour_gradient("Y", low="#5edcff", high="#035280") + 
    stat_summary(fun.y = "mean", fun.ymin = "mean", fun.ymax= "mean", size=0.3,width=0.33, geom = "crossbar") 
plot(p) 

enter image description here

グラフ:私は再びstat_summaryaestheticsを供給

注意、それ以外の場合は、のために別の要約を生成しますfillレイヤー。

myseed=101 
set.seed(myseed) 
p <- ggplot(dr, aes(x=X,y=Y,colour=Y, fill = factor(highlight))) + 
    theme_bw() + 
    geom_jitter(width=0.5, shape = 21, size = 3) + 
    scale_colour_gradient("Y", low="#5edcff", high="#035280") + 
    scale_fill_manual(values=c("red"), guide = FALSE) + 
    stat_summary(aes(x=X,y=Y,colour=Y), inherit.aes = FALSE, 
       fun.y = "mean", fun.ymin = "mean", fun.ymax= "mean", size=0.3,width=0.33, geom = "crossbar") 
plot(p) 

enter image description here

私はまだクリーナーソリューションは、手動で色をコーディングすることだと思うが、私はそれをしようとしませんでした。たぶん誰かがその解決策を提供するでしょう。

+1

私は21-25の形についてその点を忘れています。 ggplot2は、十分な特徴を持たない形状(ping @hadley)のために、美学がマッピングできないという簡単な警告をしたいと思います。 – strangeloop

0

ポイントを別々にプロットするのはどうですか?基本的には、少なくとも重大な労力を要することなく、ジッタの後で測位を回復することはできません。 2つのジッタを積層のソリューションに比べて代わり

set.seed(333) 
dr <- data.frame(
    X = sample(c("yes","no"),10, replace=T), 
    Y = rnorm(1000), 
    highlight = sample(c(1,NA),1000,replace=T,prob=c(5,995)) 
) 
ind <- is.na(dr$highlight) 

ggplot(dr, aes(x=X, y=Y, colour=Y)) + 
    geom_jitter(data=dr[ind, ], alpha=0.7, width=0.5) + 
    geom_jitter(data=dr[!ind, ], width=0.5, colour = "red", size=3) + 
    stat_summary(fun.y = "mean", fun.ymin = "mean", fun.ymax= "mean", 
       size=0.3,width=0.33, geom = "crossbar") + 
    theme_bw() 

enter image description here

関連する問題