2016-07-19 2 views
0

152 개의 샘플 (행)에 대해 상대적 세균 존재 량의 데이터 프레임이 있습니다. 모든 샘플에서 각 박테리아 그룹의 전체 존재 량에 대한 막대 그래프를 플롯해야합니다 (예 : Actinovacteria vs. 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

[변형] (http://stackoverflow.com/question) s/1181060) 데이터를 표시합니다. 여기에 [예제] (http://stackoverflow.com/a/25936383/680068) ggplot을 사용하여 – zx8754

답변

1

나는 샘플 이름이 dataframe의 행 이름이되었는지 명확하지 않았다, 그래서 나는 단순히 박테리아 이름과 같은 변수에 샘플 이름을 넣어 데이터 프레임, 재 :

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에서 몇 가지 예를 확인하십시오. 위의 dataframe가 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/ –

관련 문제