2014-04-23 9 views
9

Mam dataframe enrichment_df który wygląda takJak używać nazw i rownames z ramek danych dla aes of ggplot?

          meclocycline pimozide isocorydine alvespimycin 
day1_day3__sham3_strict_enrichment    -0.869 0.855  -0.859  0.539 
hour4_day1_day3__sham3_strict_enrichment  -0.294 0.268  -0.539  -0.120 
day7_day14__sham3_strict_enrichment   -0.333 0.404  0.297  0.233 
day90__sham3_strict_enrichment     -0.511 -0.657  -0.519  0.184 
day14__sham3_strict_enrichment     -0.239 -0.420  0.513  -0.422 
day7__sham3_strict_enrichment     -0.394 -0.380  -0.408  0.337 

i chcę, aby nakładającą barplot z przykładu z https://stackoverflow.com/a/23228273/651779. Chcę, aby wypełnienie było rowname, a na osi X nazwy nazw. Staram się wykreślić go z

ggplot(enrichment_df, aes_string(names(enrichment_df), fill = rownames(enrichment_df))) + 
geom_bar(position = 'identity', alpha = .3) 

Jednak to daje błąd object 'day1_day3__sham3_strict_enrichment' not found

Jak mogę korzystać z rownames i colnames w AES (lub aes_string) od ggplot?

Odpowiedz

14

Ilekroć użyciu ggplot powinny mieć swoje dane w długim formacie:

enrichment_df[ "day" ] <- rownames(enrichment_df) 
df.molten <- melt(enrichment_df, id.vars="day", value.name="Enrichment", variable.name="Antibiotics") 

head(df.molten) 
             day Antibiotics Enrichment 
1  day1_day3__sham3_strict_enrichment meclocycline  -0.869 
2 hour4_day1_day3__sham3_strict_enrichment meclocycline  -0.294 
3  day7_day14__sham3_strict_enrichment meclocycline  -0.333 

ten może być wyznaczony przez

ggplot(df.molten, aes(x = Antibiotics, y = Enrichment, fill = day)) + 
    geom_bar(position = "identity", stat = "identity", alpha = .3) 

enter image description here

Nie jestem pewien, ale jeśli position = "identity" z ujemną wartości są tym, czego szukasz.

Powiązane problemy