2016-07-19 12 views
0

私は、152サンプル(行)の相対的な細菌の存在量のデータフレームを持っています。私は、すべてのサンプルにわたって各細菌群の全体的な存在量の積み重なった棒グラフをプロットしたいと思いますBacteroidetes対Firmicutes等)。私は色分けしたいと思います。この伝説もあります。誰かがこれをどのように提案してもらえますか?私の問題は、Rでプロットするために列合計を取得する方法がわかりません。ありがとうございます。細菌の存在量のスタック棒プロットを作成

row.names  Actinobacteria Bacteroidetes Firmicutes Fusobacteria Proteobacteria Verrucomicrobia Other 
1 sample1 0.0084246282 0.41627099 0.55475503 0.000000e+00 7.245180e-04 5.391762e-05 1.977092e-02 
2 sample2 0.0168571327 0.13298800 0.80289437 3.560112e-05 4.272135e-03 4.238314e-02 5.696180e-04 
3 sample3 0.0020299288 0.53813817 0.42367947 3.311006e-02 7.978327e-04 3.534702e-05 2.209189e-03 
+1

[Reshape](http://stackoverflow.com/question) s/1181060)データをプロットします。ここでは、[例](http://stackoverflow.com/a/25936383/680068)ggplotを使用して – zx8754

答えて

1

私はサンプル名があなたのデータフレームの行名だったので、私は単に細菌名と同じ変数でサンプル名を入れてデータフレームを再作成するかどうかは明らかではなかった。

Sample Actinobacteria Bacteroidetes Firmicutes Fusobacteria Proteobacteria 
1 sample1 0.008424628  0.4162710 0.5547550 0.000000e+00 0.0007245180 
2 sample2 0.016857133  0.1329880 0.8028944 3.560112e-05 0.0042721350 
3 sample3 0.002029929  0.5381382 0.4236795 3.311006e-02 0.0007978327 
    Verrucomicrobia  Other 
1 5.391762e-05 0.019770920 
2 4.238314e-02 0.000569618 
3 3.534702e-05 0.002209189 

では、次のコマンドを実行することができ、このデータセットを再現するには、次の

df <- structure(list(Sample = structure(1:3, .Label = c("sample1", 
"sample2", "sample3"), class = "factor"), Actinobacteria = c(0.0084246282, 
0.0168571327, 0.0020299288), Bacteroidetes = c(0.41627099, 0.132988, 
0.53813817), Firmicutes = c(0.55475503, 0.80289437, 0.42367947 
), Fusobacteria = c(0, 3.560112e-05, 0.03311006), Proteobacteria = c(0.000724518, 
0.004272135, 0.0007978327), Verrucomicrobia = c(5.391762e-05, 
0.04238314, 3.534702e-05), Other = c(0.01977092, 0.000569618, 
0.002209189)), .Names = c("Sample", "Actinobacteria", "Bacteroidetes", 
"Firmicutes", "Fusobacteria", "Proteobacteria", "Verrucomicrobia", 
"Other"), class = "data.frame", row.names = c("1", "2", "3")) 

@のzx8754は、このデータフレームは、長い形式にワイドフォーマットから移動する、すなわち、再形成する必要が示唆したように。詳細は、linkをご確認ください。上記のデータフレームがdfを、指定されている場合

次のコマンドは、長い形式でそれを再構築します:

library(reshape2) 
df_long <- melt(df, id.vars = "Sample", variable.name = "Phyla") 

をここから我々はggplot使用してプロットすることができます

library(ggplot2) 
ggplot(df_long, aes(x = Sample, y = value, fill = Phyla)) + 
    geom_bar(stat = "identity") 

います:

enter image description here

+0

ありがとうございます。凡例のタイトルに変数の代わりに「Phyla」と表示されるように変更する方法はありますか? – espop23

+0

もちろん、 'variable'は単に' df_long'にバクテリア名を保持するカラムの名前です。データフレーム内のその列の名前を変更すると、凡例のタイトルもそれに応じて変更されます。あるいは、 'melt'プロシージャで直接変更することもできます。私はそれを追加するコードを編集しました。 – thepule

+1

または、データを使用せずに実際の凡例のタイトルを変更することができます:http://www.cookbook-r.com/Graphs/Legends_%28ggplot2%29/ –

関連する問題