2016-06-17 3 views
2

Я создаю граненый баргар с ggplot. У меня проблема с тем, что MWE ниже генерирует график внизу. Я бы хотел, чтобы он создавал полосы, имеющие одинаковые ширины в обеих гранях. Как я могу это сделать?geom_bar width in ggplot2

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); 

problematic image

+0

также: http://stackoverflow.com/questions/30196143/bars-in-geom-bar-have-unwanted-different-widths-when-using-facet-wrap – beetroot

ответ

3

Не уверен, если это то, что вам нужно. Создание держателя места для недостающего уровня фактора с использованием функции complete от tidyr может также сделать ширину полосы одинаковой с двух сторон. Недостатком является то, что второй график взят.

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

enter image description here

Смежные вопросы