Scatterplot: Показывать недостающие уровни (-ы) в легенде

Я хочу создать легенду рассеивания + легенду, используя переменную группировки ( "категория" ) в приведенном ниже примере. Как я могу заставить все уровни факторов (т.е. LETTERS[1:5] ниже), даже если они отсутствуют в реальных данных, чтобы отображаться в легенде (чтобы подчеркнуть их отсутствие!):

dat <- data.frame(V1 = sample(seq(1:10), 10),
 V2 = sample(seq(1:10), 10),
 category = factor(sample(LETTERS[1:4], 10, replace=TRUE),
 LETTERS[1:5]))
ggplot(dat, aes(x=V1, y=V2)) +
 geom_point(aes(size=category), shape=1)

В моем фактическом script я использую scale_size_discrete() для изменения ярлыков легенды и т.д.

Спасибо!

1 ответ

Используйте scale_size_discrete() и добавьте аргумент drop=FALSE, чтобы показать все уровни.

ggplot(dat, aes(x=V1, y=V2)) +
 geom_point(aes(size=category), shape=1)+
 scale_size_discrete(drop=FALSE)

licensed under cc by-sa 3.0 with attribution.