ggplot2 position = 'dodge' производит слишком широкие бары - PullRequest
3 голосов
/ 18 августа 2011

Я заинтересован в создании гистограммы с позицией = 'dodge' и fill = некоторый фактор (т.е. параллельные столбцы для различных подгрупп в каждом баре / группе), но ggplot2 дает мне что-то вроде первый график здесь , который имеет крайнюю правую полосу, которая слишком широка и не оставляет места для пустой группы, которую я хотел бы.

Вот простой случай:

df = data.frame(a=c('o','x','o','o'), b=c('a','b','a','b'))
qplot(a, data=df, fill=b, position='dodge')

От ggplot geom_bar - слишком широкие бары Мне пришла в голову эта идея, и хотя она технически создает полосу такой же ширины, но не оставляет места для пустой группы:

ggplot(df, aes(x=a, fill=a))+
geom_bar(aes(y=..count../sum(..count..))) + 
facet_grid(~b,scales="free",space="free")

Как мнедобиться того, что я хочу?Заранее спасибо.

1 Ответ

3 голосов
/ 18 августа 2011

Параметры по умолчанию в ggplot производят то, что, я думаю, вы описываете. Опции scales="free" и space="free" делают все наоборот, поэтому просто удалите их из кода. Кроме того, по умолчанию stat для geom_bar - агрегирование путем подсчета, поэтому вам не нужно явно указывать свою статистику.

ggplot(df, aes(x=a, fill=a)) + geom_bar() + facet_grid(~b)

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...