Измените масштаб в легенде для размера точек, который указывает значение - PullRequest
0 голосов
/ 10 мая 2019

Я настраиваю график рассеяния, а размер точек представляет количество образцов, на которых основано измерение.

Существует неравномерное распределение размеров образцов для значений / точек.

Многие имеют размеры выборок от 10 до 50, а другие основаны на 500 или 1000 измерениях.

Я хотел бы изменить легенду так, чтобы указывался размер точки для размера выборки 10 и 50, а также для 500 и 1000.

Какая настройка позволила бы это?

enter image description here

gg.pf0<-ggplot(bc.pf,aes(x=age.WERT,y=weight,color=as.factor(bc.pf$Group),size=(bc.pf$n)))
(gg.pf1<-gg.pf0 + geom_point(aes(alpha=0.5)))

1 Ответ

2 голосов
/ 10 мая 2019

Два общих комментария:

  1. Вы должны никогда использовать $ -индексировать внутри aes.См. этот пост , чтобы понять, что может пойти не так, если вы это сделаете.
  2. Вы должны всегда предоставить воспроизводимую минимальную выборку, чтобы респондентам SO было с чем работать.Явные примеры данных также часто помогают избежать двусмысленности относительно типов данных.

Что касается вашего вопроса, вы можете использовать scale_size_continuous.Вот воспроизводимый пример, основанный на mtcars

ggplot(mtcars, aes(mpg, disp, size = hp)) +
    geom_point() +
    scale_size_continuous(
        breaks = c(10, 50, 500, 1000),
        limits = c(0, 1000))

enter image description here

Обратите внимание, что scale_size масштабирует область точек, тогда как scale_radiusмасштабирует радиус.Альтернативой scale_size является scale_size_area, которая гарантирует, что значение 0 сопоставлено с размером 0.

...