2017-05-12 11 views
0

x軸が連続変数のいくつかのカテゴリである散布図を生成しようとしています。それに最も近いものはマンハッタンプロットで、x軸は染色体(カテゴリー)によって分割されますが、各カテゴリ内で値は連続しています。ggplot2:カテゴリ変数による散布図の分割

データ:開始点

chr <- sample(x = c(1,2), replace = T, size = 1000) 
bp <- as.integer(runif(n = 1000, min = 0, max = 10000)) 
p <- runif(n = 1000, min = 0, max = 1) 
df <- data.frame(chr,bp,p) 

ggplot(df, aes(y = -log10(p), x =bp)) + geom_point(colour=chr) 

enter image description here

赤と黒の点は、x軸に沿って別のカテゴリーであるべきです。

答えて

3

あなたは本当に代わりに、ファセットの単一のプロットでこれを行うにしたい場合は、条件付きで例えば、ラベルを調整手動で、あなたの変数xを再スケールとができます

df %>% 
    mutate(bp.scaled = ifelse(chr == 2, bp + 10000, bp)) %>% 
    ggplot(aes(y = -log10(p), x = bp.scaled)) + geom_point(colour=chr) + 
    scale_x_continuous(breaks = seq(0,20000,2500), 
         labels = c(seq(0,10000,2500), seq(2500,10000,2500))) 

結果:

+0

ありがとう、これは素晴らしいです!正解私はファセットを使いたくありません。これを行うための単純なグループ化コマンドがないことに私は驚いています。 – mbyvcm

+3

私は 'ファセット'がそのコマンドだと思います。結果として得られるプロットをどのように並置するかについてはちょうど審美的な選択です。 – ulfelder

+0

私はいくつかのファセットパラメータで遊んでいます。情報をありがとう – mbyvcm

4

私はあなたの質問を理解しているかどうかわかりません。おそらくあなたはファセットを探しています。この例を参照してください。

require(ggplot2) 

chr <- sample(x = c(1,2), replace = T, size = 1000) 
bp <- as.integer(runif(n = 1000, min = 0, max = 10000)) 
p <- runif(n = 1000, min = 0, max = 1) 
df <- data.frame(chr,bp,p) 

ggplot(df, aes(y = -log10(p), x = bp)) + 
    geom_point(aes(colour = factor(chr))) + 
    facet_wrap("chr") 

enter image description here

+0

ありがとうございます。これは正しいアイデアですが、私はむしろ別々のプロットを持たないでしょう。可能であれば、面はありません。 – mbyvcm