Эстетика размера 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. Внезапно мой график сильно перегружен точками, поскольку точки группы 2 настолько велики. Как мне изменить размеры точек, чтобы сделать их более подходящими по размеру, чтобы я мог разместить больше точек без наложения точек? Я рассмотрел geom_density, но он не очень подходит для моих целей, и я предпочел бы визуализацию диаграммы рассеяния.
Моя цель - некая функция, которая меняет мои точки так, что точки в целом просто меньше, чем сейчас, с соответствующей пропорцией размера. Чтобы сделать вещи более разумными, как только я это сделаю, я буду делать лог-преобразование переменной размера, чтобы сделать вещи лучше пропорциональными (особенно, поскольку любое общее изменение размеров точек, вероятно, приведет к тому, что меньшие точки будут почти невидимыми малыми), Если есть какой-то лучший способ сделать это, я весь слух! Спасибо, парни.
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))