14

だから私は以下の例としてサンプリングした大量のデータを持っています:

Sequence  Abundance   Length
CAGTG    3       25
CGCTG    82      23
GGGAC    4       25
CTATC    16      23
CTTGA    14      25
CAAGG    9       24
GTAAT    5       24
ACGAA    32      22
TCGGA    10      22
TAGGC    30      21
TGCCG    25      21
TCCGG    2       21
CGCCT    22      24
TTGGC    4       22
ATTCC    4       23

ここでは各シーケンスの最初の 4 語のみを示していますが、実際には「長さ」の長さです。ここにある各サイズ クラスのシーケンスの豊富さを調べています。さらに、特定のシーケンスがそのサイズ クラス内で表す存在量の割合を視覚化したいと考えています。現在、次のような積み上げ棒グラフを作成できます。

ggplot(tab, aes(x=Length, y=Abundance, fill=Sequence)) 
  + geom_bar(stat='identity') 
  + opts(legend.position="none")

サンプル データの ggplot 積み上げ棒グラフ

これは、このような小さなデータ セットでは問題ありませんが、実際のデータ セットには約 170 万行あります。それは非常にカラフルに見え、特定の配列が 1 つのサイズのクラスで過半数の存在量を保持していることがわかりますが、非常に乱雑です。

そのシーケンスの豊富さによって、各サイズの色付きの積み上げバーを注文できるようにしたいと思います。つまり、スタック内で存在量が最も多いバーが各スタックの一番下にあり、存在量が最も少ないバーが一番上にあります。そうすれば、より見栄えがよくなるはずです。

ggplot2 でこれを行う方法についてのアイデアはありますか? aes() に「順序」パラメーターがあることは知っていますが、私が持っている形式のデータをどう処理すべきかわかりません。

4

2 に答える 2

18

ggplot2 の積み上げ棒グラフで棒が描画される順序 (下から上) は、グループを定義する要素の順序に基づいています。したがって、Sequence因子は に基づいて並べ替える必要がありますAbundance。ただし、正しい積み重ね順序を得るには、順序を逆にする必要があります。

ab.tab$Sequence <- reorder(ab.tab$Sequence, ab.tab$Abundance)
ab.tab$Sequence <- factor(ab.tab$Sequence, levels=rev(levels(ab.tab$Sequence)))

コードを使用すると、要求したプロットが得られます

ggplot(ab.tab, aes(x=Length, y=Abundance, fill=Sequence)) +
  geom_bar(stat='identity') +
  opts(legend.position="none")

ここに画像の説明を入力

ただし、少し異なるものをお勧めします。色をシーケンスにマッピングするスケールを抑制しているため、特定のシーケンスをとにかく気にしないことを説明しているように見えるので(そして多くのシーケンスがあるでしょう)、その部分を省略してみませんか?塗りつぶし色なしで棒の輪郭を描くだけです。

ggplot(ab.tab, aes(x=Length, y=Abundance, group=Sequence)) +
  geom_bar(stat='identity', colour="black", fill=NA)

ここに画像の説明を入力

于 2012-02-10T16:54:44.513 に答える
2

ggplot の美学で group パラメータを使用して、目標を達成することもできます

ggplot(ab.tab, aes(x=長さ, y=豊富さ, 塗りつぶし=シーケンス, グループ=豊富さ)) + geom_bar(stat='identity')

反対のことをしたい場合、つまり、各スタックの TOP セクションでスタック内の存在量が最も高いバーを並べ替える場合は、[グループの存在量] パラメーターの前に負の記号を使用します。

ggplot(ab.tab, aes(x=長さ, y=豊富さ, 塗りつぶし=シーケンス, グループ=-豊富さ)) + geom_bar(stat='identity')

于 2020-11-21T06:26:25.763 に答える