2013-05-13 18 views
20

Próbuję wygenerować jeden wykres na profil z następującym kodem, ale nadal otrzymuję "Co najmniej jedna warstwa musi zawierać wszystkie zmienne używane do fasetowania." błędy. Spędziłem ostatnie kilka godzin próbując sprawić, żeby działało, ale nie mogłem.Jak poprawnie używać facet_grid w ggplot2?

Wierzę, że anwser musi być prosty, czy ktoś może pomóc?

d = structure(list(category = structure(c(2L, 2L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 3L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 3L, 3L, 3L, 3L, 
3L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L), .Label = c("4X4", 
"HATCH", "SEDAN"), class = "factor"), profile = structure(c(1L, 
1L, 1L, 1L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 
1L), .Label = c("FIXED", "FREE", "MOBILE"), class = "factor"), 
    value = c(6440.32, 6287.22, 9324, 7532, 7287.63, 6827.27, 
    6880.48, 7795.15, 7042.51, 2708.41, 1373.69, 6742.87, 7692.65, 
    7692.65, 8116.56, 7692.65, 7692.65, 7692.65, 7962.65, 8116.56, 
    5691.12, 2434, 8343, 7727.73, 7692.65, 7721.15, 1944.38, 
    6044.23, 8633.65, 7692.65, 7692.65, 8151.65, 7692.65, 7692.65, 
    2708.41, 3271.45, 3333.82, 1257.48, 6223.13, 7692.65, 6955.46, 
    7115.46, 7115.46, 7115.46, 7115.46, 6955.46, 7615.46, 2621.21, 
    2621.21, 445.61)), .Names = c("category", "profile", "value" 
), class = "data.frame", row.names = c(NA, -50L)) 

library(ggplot2) 

p = ggplot(d, aes(x=d$value, fill=d$category)) + geom_density(alpha=.3) 
p + facet_grid(d$profile ~ .) 

Odpowiedz

34

Twój problem wynika z wyraźnie odnosząc się do zmiennych (tj d$profile), a nie w odniesieniu do data argument w wywołaniu ggplot. Nie ma potrzeby, aby d$ w dowolnym miejscu.

Po faceting przy użyciu facet_grid lub facet_wrap, musisz to zrobić. Jest to również dobra praktyka, aby zrobić w zaproszeniach do aes

p = ggplot(d, aes(x=value, fill=category)) + geom_density(alpha=.3) 
p + facet_grid(profile ~ .) 

enter image description here

Powiązane problemy