Функция для изменения размера точек в geom_point на основе суммы данных об отсутствии присутствия - PullRequest
1 голос
/ 06 февраля 2020

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

Вот фиктивная версия данных:

dummy = structure(list(Sample = c("A1", "A1", "A1", "A2", "A2", "A2", 
"B1", "B1", "B1", "B2", "B2", "B2"), Species = c("snuffles1", 
"snuffles2", "snuffles3", "snuffles1", "snuffles2", "snuffles3", 
"snuffles1", "snuffles2", "snuffles3", "snuffles1", "snuffles2", 
"snuffles3"), Presence = c(1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1
), Day = c("A", "A", "A", "A", "A", "A", "B", "B", "B", "B", 
"B", "B")), row.names = c(NA, -12L), class = c("tbl_df", "tbl", 
"data.frame"))
ggplot(dummy[which(dummy$Presence>0),], aes(x = Day, y = Species, color = Species)) +
  geom_point(alpha=0.5) +
  geom_count(aes(size = sum(dummy$Presence))) 

Я хотел бы построить данные в ggplot, где размер каждой точки зависит от суммы числа наблюдения внутри этой группы (т. е. если бы в день А нюхатели 1 наблюдались 2 раза, то точка должна быть размером 2, тогда как если бы в день В нюхатели 1 наблюдались один раз, то точка была бы размером 1). Я надеюсь это имеет смысл? Этот подсчет присутствия / отсутствия на основе группы похож, но не совсем то, что мне нужно.

Я предполагаю, что мне нужно использовать какую-то функцию для подсчета количества наблюдений для каждого вида, в зависимости от того, какую переменную я рассматриваю, но я не настолько умен, чтобы думать, как это сделать. .

Спасибо за любые советы.

enter image description here

1 Ответ

2 голосов
/ 06 февраля 2020

Сделайте дополнительный подсчет по группе. Затем нарисуйте этот фрейм данных как дополнительный слой, используя geom_point

Я добавляю разрывы к scale_size, чтобы показать только исходящие размеры

library(tidyverse)

count_dum <- dummy %>% group_by(Day, Species) %>% summarise(count = sum(Presence))

ggplot(dummy[which(dummy$Presence > 0), ], aes(x = Day, y = Species, color = Species)) +
  geom_point(data = count_dum, aes(size = count), alpha = 0.5) +
  scale_size_continuous(breaks = unique(count_dum$count))

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...