geom_bar width in ggplot2 [duplicate]

2019-07-14 05:59发布

问题:

This question already has an answer here:

  • ggplot2: Drop unused factors in a faceted bar plot but not have differing bar widths between facets 3 answers

I am generating faceted barchart with ggplot. I have the problem that the MWE below generates the graph at the bottom. I would like it to generate bars that have the same widths in both facets. How would I go about this?

library(ggplot2)

df = data.frame(x = as.factor(c(1, 2, 3, 1, 2)),
                y = c(2, 3, 4, 5, 6),
                g = c(1, 1, 1, 2, 2));

ggplot(df, aes(x = 1, y = y, fill = x)) +
  geom_bar(stat = "identity",
           position = "dodge") +
  facet_wrap(~ g);

回答1:

Not sure if this is what you need. Creating a place holder for the missing factor level using the complete function from tidyr package can also make the bar width the same at two facets. The downside is that the second plot is imblanced.

ggplot(tidyr::complete(df, x, g), aes(x = 1, y = y, fill = x)) +
       geom_bar(stat = "identity", position = "dodge") +
       facet_wrap(~ g);



标签: r ggplot2