Reputation: 3021
I am having trouble controlling the colour of barplots in ggplot
require(mice)
require(ggplot2)
impute <- mice(nhanes, seed = 101)
ldt <-complete(impute,"long", include=TRUE)
ldt$Imputed<-ifelse(ldt$".imp"==0,"Observed","Imputed")
ggplot(ldt[!is.na(ldt$hyp),], aes(x= factor(hyp), colour=Imputed)) +
geom_bar() +
facet_wrap(~.imp, nrow = 1) +
scale_y_continuous(expand = c(0,0))
Which gives:
But I would like the bars to be filled with the colour, so I tried:
ggplot(ldt[!is.na(ldt$hyp),], aes(x= factor(hyp))) +
geom_bar(colour = Imputed) +
facet_wrap(~.imp, nrow = 1) +
scale_y_continuous(expand = c(0,0))
But this gives the error:
Error in do.call("layer", list(mapping = mapping, data = data, stat = stat, :
object 'Imputed' not found
Upvotes: 1
Views: 963
Reputation: 44614
Use fill=Imputed
instead of colour=Imputed
in your first attempt.
ggplot(ldt[!is.na(ldt$hyp),], aes(x= factor(hyp), fill=Imputed)) +
geom_bar() +
facet_wrap(~.imp, nrow = 1) +
scale_y_continuous(expand = c(0,0))
You could set fill=Imputed
in geom_bar
instead, but you'd have to wrap it in a call to aes
, as you would in the call to ggplot
.
Upvotes: 2
Reputation: 19454
Instead of using colour = Imputed
in the original aesthetic mapping, use fill = Imputed
ggplot(ldt[!is.na(ldt$hyp),], aes(x= factor(hyp), fill=Imputed)) +
geom_bar() +
facet_wrap(~.imp, nrow = 1) +
scale_y_continuous(expand = c(0,0))
Upvotes: 2