В ggplot2 я хочу, чтобы мои блоки на блочном графике имели одинаковую ширину, даже если заданная комбинация уровней не существует.
Например, в mtcars cyl=8 и gear=4 не существуют, что приводит к большим полосам на этом графике:
qplot(data=mtcars, x=as.factor(cyl), y=mpg,
colour=as.factor(gear), geom="boxplot")
Для гистограммы заполнение нашего фрейма данных значениями NA для этих комбинаций уровней решит проблему, но не для коробчатой диаграммы:
mtcars.fill <- data.frame(cyl=8,gear=4,mpg=NA)
mtcars <- rbind.fill(mtcars,mtcars.fill)
qplot(data=mtcars, x=as.factor(cyl), y=mpg, colour=as.factor(gear), geom="boxplot")
Warning message:
Removed 1 rows containing non-finite values (stat_boxplot).
Что приводит к точно такому же сюжету.
stat_boxplot имеет аргумент для значений NA, но по умолчанию он не удаляет NA:
na.rm = FALSE