1

染色体ごとに既にビニングされているいくつかのゲノム データがあり、各ビンの値は 0 から 1 の間です。以下に例を示します。

Chr Bin Value
1   1   0.40 
1   2   0.12
1   3   0.45
1   4   0.67
2   1   0.32
2   2   0.12
3   1   0.22
3   2   0.44
3   3   0.55
4   1   0.21

注意すべき重要なことは、染色体 (上記の「Chr」) は長さが異なるため、異なる数のビンを持つことです。これを次のように正しく表すことができます。

ggplot(dat, aes(Chr)) + coord_flip() + geom_bar()

これは単にビン数のバープロットを示しています。私がやりたいのは、バーを連続値で埋めることです。これが問題を見つけているところです。私の試み:

ggplot(dat, aes(x=Chr, y=Value, color=Value)) + coord_flip() + theme_bw() + geom_bar(stat="identity") + scale_color_gradient("Value", low = "white", high = "black")

これにより、目的のプロットが生成されますが、y 軸が正しくなく、ビンの数が表示されません (値を y にマッピングしているためだと思います)。ビンの数を y 軸にプロットし、スケールを台無しにせずに連続変数を入力するにはどうすればよいですか?

4

1 に答える 1

2

あなたの質問が理解できれば、あなたfillcolor. また、コメントに基づいて、Binの各値のビンの数ではなく、ビン ID のように見えますChrbin.countしたがって、以下のコードでは、 のすべての値に対して 1 に等しい新しい変数を作成するだけですBin。次にy=bin.count、everyBinが 1 回カウントされるように使用します。ラベルを付けたい場合に備えて、各バー内にテキスト ラベルも追加しました。

library(dplyr)

ggplot(dat %>% mutate(bin.count=1) %>%
         group_by(Chr) %>%
         mutate(bin.pos = cumsum(bin.count) - 0.5*bin.count), 
       aes(x=Chr, y=bin.count, fill=Value)) + 
  coord_flip() + theme_bw() + 
  geom_bar(stat="identity") + 
  geom_text(aes(label=paste0("Bin ID: ", Bin), y=bin.pos), colour="white") +
  scale_fill_gradient("Value", low = "white", high = "black", 
                      limits=c(0,max(dat$Value))) +
  scale_y_continuous(breaks=0:4) +
  labs(y="Bins")

ここに画像の説明を入力

于 2015-09-10T17:53:46.313 に答える