#r #ggplot2
Вопрос:
Пытаюсь найти решение для настройки размера точки при использовании geom_count. Geom_count увеличивает точки, когда точки перекрываются. При создании разных участков с помощью geom_count все они показывают разные размеры точек (что может привести к путанице при сравнении участков). Я видел другие варианты в ggplot2 для изменения размера точки, но затем geom_count отменяется.
Вот пример версии сценария:
x <- c(10,30,60,80,80,100,30,40)
y <- c(30,70,50,80,80,80,40,50)
db <- merge(x,y)
ggplot(db, aes(x, y))
geom_count(alpha=0.8, colour="steelblue")
scale_size_area(breaks = round)
theme_bw() theme(panel.grid.minor = element_blank(), plot.tag.position = "bottomleft")
labs(title= "X vs Y",subtitle=" ", tag = "A")
Ответ №1:
Если вы хотите согласовать размеры точек на разных участках, вам нужно будет вручную задать соответствующие ограничения. Рассмотрим следующий пример:
library(ggplot2)
library(patchwork)
#> Warning: package 'patchwork' was built under R version 4.0.3
n <- 10000
df1 <- data.frame(
x = sample(LETTERS[1:5], n, replace = TRUE),
y = sample(LETTERS[1:5], n, replace = TRUE)
)
df2 <- data.frame(
x = sample(LETTERS[1:5], n / 10, replace = TRUE),
y = sample(LETTERS[1:5], n / 10, replace = TRUE)
)
plot1 <- ggplot(df1, aes(x, y))
geom_count()
plot2 <- ggplot(df2, aes(x, y))
geom_count()
Размеры двух участков ужасно не синхронизированы:
plot1 plot2
Вы можете вручную рассчитать, какими должны быть пределы масштабов, и применить их к различным участкам.
range <- range(c(table(df1$x, df1$y), table(df2$x, df2$y)))
# 'amp;' operation is about the same as adding this scale to individual plots
plot1 plot2 amp; scale_size_area(limits = range)
Создано 2021-03-31 пакетом reprex (v1.0.0)
Комментарии:
1. Большое вам спасибо, кажется, это работает! Это действительно дало мне странные перерывы в легендах. Поэтому для других читателей вы можете изменить легенду с помощью
(plot1 plot2 amp; scale_size_area(limits = range, breaks=round)
или указать цифры(plot1 plot2 amp; scale_size_area(limits = range, breaks=1:2)
2. Этот код, похоже, больше не работает, когда у вас более двух групп. Он не показывает некоторые данные, и вы часто сталкиваетесь с такими вещами, как 7.5 (что не имеет никакого смысла). Есть какие-нибудь идеи?
3. Можете ли вы привести воспроизводимый пример того, когда что-то идет не так?
4. В процессе создания воспроизводимого примера я выяснил, где все пошло не так! Приносим извинения за причиненные неудобства.
5. Не нужно никаких извинений! Просто показывает, что создание репрезентаций также полезно для самодиагностики 🙂