ggplot эстетический размер с меньшими точками

Вероятно, это простой вопрос, но я не знаю ответа на этот вопрос. Можно ли изменить масштаб точек в ggplot без ущерба для эстетики размера?

В принципе, допустим, у меня есть следующее:

data <- data.frame(size=c(1, 1, 2, 2, 2), x=1:5, y=1:5, color=factor(c(0, 0, 1, 1, 1)))
cols <- unique(data$color)
names(cols) <- c("group 1", "group 2")
sols <- unique(data$size)
names(sols) <- c("group 1", "group 2")

Я могу изобразить это как:

ggplot(data,aes(x=x, y=y, size=size, color=color)) +
  geom_point() +
  scale_color_discrete("Dot", labels=names(cols)) +
  scale_size_continuous("Dot", breaks=sols)

который показывает такие точки, как:

введите здесь описание изображения

Это выглядит великолепно, но предположим, что теперь у меня есть 1000 наблюдений за моими данными, а не только 5. Внезапно мой график сильно перегружен точками, поскольку точки group2 такие большие. Как изменить масштаб точек, чтобы сделать их более подходящими по размеру, чтобы можно было разместить больше точек без перекрытия точек? Я рассмотрел geom_de density, но это не совсем подходит для моих целей, и я бы предпочел визуализацию диаграммы рассеяния.

Моя цель - некоторая функция, которая изменяет масштаб моих точек так, чтобы точки в целом были меньше, чем они есть сейчас, с соответствующей пропорцией размера. Чтобы сделать вещи более разумными, как только у меня это будет, я сделаю логарифмическое преобразование переменной размера, чтобы сделать вещи более пропорциональными (в частности, поскольку любое общее изменение масштаба точек, вероятно, приведет к тому, что меньшие точки будут почти невидимыми маленькими) . Если есть лучший способ сделать это, я весь в ушах! Спасибо ребята.


person Eric    schedule 19.01.2018    source источник
comment
если у вас есть несколько очков, вы можете использовать альфа   -  person MLavoie    schedule 19.01.2018
comment
ага; ive пробовал играть с альфой; не совсем то, на что я надеялся :( Спасибо за предложение! В частности, одна из групп с большим размером также имеет много точек, поэтому, когда я смотрю в спецификации текущего размера, весь фон в основном цвет точек для самой большой группы, независимо от альфа).   -  person Eric    schedule 19.01.2018
comment
А как насчет гексбинов? (geom_hex())   -  person Jake Kaupp    schedule 19.01.2018
comment
Я не думаю, что hexbins позволяет вам взвешивать точки внутри корзины?   -  person Matifou    schedule 30.05.2019


Ответы (1)


Догадаться. Можно использовать функцию scale_size() для непосредственного сопоставления значений размера следующим образом (используя начальный пример):

ggplot(data,aes(x=x, y=y, size=size, color=color)) +
  geom_point() +
  scale_color_discrete("Dot", values=cols) +
  scale_size_continuous("Dot", breaks=sols) +
  scale_size(range=c(0.5, 2))

введите здесь описание изображения

person Eric    schedule 19.01.2018