2012-04-02 15 views
8

Próbuję utworzyć bardzo prosty wykres słupkowy w ggplot2, ale z jakiegoś powodu nie działa i pojawia się komunikat o błędzie: "Błąd w pmin (y, 0): nie znaleziono obiektu "y" ". Gdzie jest problem?Skumulowany wykres słupkowy ggplot2 - obiekt y nie został znaleziony

factorvar <- c(1,1,1,2,2,2,3,3,3) 
factorvar <- factor(factorvar, labels=c("Type", "Size", "Outcome")) 
freq <- c(3,1,4,1,2,2,4,1,1) 
fillvar <- c(1,1,1,2,2,2,3,3,3) 
fillvar <- factor(fillvar) 

df.harvest <- data.frame(fillvar,freq,factorvar) 

harvest <- ggplot(df.harvest, aes(x=factorvar, y=freq, fill=fillvar)) + geom_bar() 
harvest 
+2

Co stanie się, jeśli dodasz 'stat =" identity "' do twojego wywołania 'geom_bar', tak jak to:' geom_bar (stat = "identity") '? –

Odpowiedz

1

Nie jestem pewien, co oznacza, że ​​komunikat o błędzie, ale jeśli używasz fillvar = c(1,2,3,1,2,3,1,2,3), (w miejsce zmiennej fillvar) dostaniesz skumulowany wykres słupkowy.

2

Nie jestem pewien, czy rozumiem, co chcesz liczyć i co chcesz na stosie, ale przy niektórych swoich danych i kod ten

qplot(factor(freq), data=df.harvest, geom="bar", fill=factorvar) 

uzyskać to,

qplot(factor(freq), data=df.harvest, geom="bar", fill=factor(factorvar))

Czy tego właśnie szukasz?

3

To jest dość stary, ale nie widzę żadnej dobrej odpowiedzi na to:

Należy zawsze podawać argumenty geom_bar jeśli dostarczanie osi y.

Jesteś już zapewniając częstotliwość jako oś y i nie chcą geom_bar obliczyć je za ciebie, więc musisz określić geom_bar(stat = "identity")

Również tutaj swoją fillvar jest zasadniczo taka sama jak factorvar i nie ma sensu używając jednego jako osi i jednego jako koloru wypełnienia.

Jeśli jednak były inne, trzeba było również podać geom_bar(stat = "identity", position="dodge") lub (stat = "identity", position="stack").

Domyślnie stat przełączał się na "bin" w twoim przypadku i podawał błąd. Również domyślnie pozycja używa stack.

Powiązane problemy