гистограмма сгруппированных/подсчетов/ данных в ggplot

#r #ggplot2 #histogram

Вопрос:

У меня есть агрегированные данные, каждая строка которых представляет нескольких человек, например

 data <- tribble(
  ~x, ~count,
  10, 2,
  12, 5, 
  10, 1, 
  15, 12,
  15.5, 2,
  11, 7,
  19, 1,
  14, 1,
  9, 1,
  17, 1,
  13, 4) 
 

Можно ли создать гистограмму или график плотности, учитывающий количество исков

 data %>% ggplot(aes(x = x, count = count))   geom_histogram(bins = 5)
 

(в этом случае счетчик игнорируется), или мне следует разгруппировать данные?

Ответ №1:

Я думаю geom_col , что это лучше подходит для этого, чем geom_histogram , хотя его можно использовать geom_histogram(stat = "identity") (как в предыдущей версии этого ответа).

 library(ggplot2)
library(dplyr, warn.conflicts = FALSE)
data <- tribble(
    ~x, ~count,
    10, 2,
    12, 5, 
    10, 1, 
    15, 12,
    15.5, 2,
    11, 7,
    19, 1,
    14, 1,
    9, 1,
    17, 1,
    13, 4) 
data %>% ggplot(aes(x = x, y = count))   geom_col()
 

Создано 2021-09-05 пакетом reprex (v2.0.1)

Комментарии:

1. это вообще не сработало для большого набора данных, но разгруппировка, похоже, является решением: data %>% uncount(count) %>% ggplot(aes(x = x)) geom_histogram()

2. Что значит «совсем не сработало»? Ошибка или вывод не такой, как вы ожидали?

3. Извините, не было понятно. с набором данных 2k записей он не выдает никаких выходных данных (пустой график). Вот пример с 50 записями. Используя предложенный подход, он дает некоторый результат, но это не то, что мне хотелось бы. data1 <-fread("https://www.dropbox.com/s/giwwep7ij6t4er2/testdata50.csv?dl=1") подход 1: data1 %>% ggplot(aes(x = x, y = count)) geom_col() подход 2: data1 %>% uncount(count) %>% ggplot(aes(x = x)) geom_histogram(bins=10)