Reputation: 355
I am trying to make a nice plot with ggplot. However, I do not know why it is not showing data.
Here is some minimum code
dummylabels <- c("A","B","C")
dummynumbers <- c(1,2,3)
dummy_frame <- data.frame(dummylabels,dummynumbers)
p= ggplot(data=dummy_frame, aes(x =dummylabels , y = dummynumbers)) + geom_bar(fill = "blue")
p + coord_flip() + labs(title = "Title")
I get the following error message, which I cannot make sense of
Error : Mapping a variable to y and also using stat="bin".
With stat="bin", it will attempt to set the y value to the count of cases in each group.
This can result in unexpected behavior and will not be allowed in a future version of ggplot2.
If you want y to represent counts of cases, use stat="bin" and don't map a variable to y.
If you want y to represent values in the data, use stat="identity".
See ?geom_bar for examples. (Defunct; last used in version 0.9.2)
Why do I get this error?
Upvotes: 1
Views: 6466
Reputation: 24945
From the error message you got:
If you want y to represent values in the data, use stat="identity".
geom_bar expects to be used as a histogram, where it bins the data itself and calculates heights based on frequency. This is the stat="bin"
behaviour, and is the default. It throws an error, as you gave it a y value too. To fix it, you want stat="identity"
:
p <- ggplot(data = dummy_frame, aes(x = dummylabels, y = dummynumbers)) +
geom_bar(fill = "blue", stat = "identity") +
coord_flip() +
labs(title = "Title")
p
Upvotes: 3