Нужна сглаженная линия на гистограмме. Почему geom_density рисует две линии?

У меня проблема с моей гистограммой, поверх которой я хочу добавить сглаженную линию, желательно полиномиальную.

Самое близкое, что я получил, это добавить сглаженный geom_density или geom_line с stat="density" с дополнительной опцией настройки.

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

Пример данных можно найти здесь: https://www.dropbox.com/s/13795hnpqmwftnq/chyp3histo_total_lip.rda?dl=0

Используя этот код:

histos1a<-ggplot(data=chyp3histo_total_lip,aes(x=totallipid))+
 geom_histogram(color=col,fill=col)+
 geom_histogram(fill="white")+ 
 geom_density()

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

Почему он рисует две линии, которые кажутся диапазоном?

Здоровья и спасибо!


person Moritz Schmid    schedule 13.03.2018    source источник


Ответы (1)


Проблема в том, что у вас есть сгруппированный стол; видимо (к моему удивлению) ggplot2 обращает на это внимание. Пытаться

cc <- dplyr::ungroup(chyp3histo_total_lip)
ggplot(data=cc,...) ## etc.

Если бы вы опубликовали результаты str(chyp3histo_total_lip), мы бы смогли это диагностировать, не загружая данные...

str(chyp3histo_total_lip)
Classes ‘grouped_df’, ‘tbl_df’, ‘tbl’ and 'data.frame': 544 obs. of  1 variable:
 $ totallipid: num  NA 0.046 NA NA NA ...
 - attr(*, "vars")= chr  "haul" "pred"
 - attr(*, "drop")= logi TRUE
 - attr(*, "indices")=List of 2
  ..$ : int  0 1 2 3 4 5 6 7 8 9 ...
  ..$ : int  122 123 124 125 126 127 128 129 130 131 ...
 - attr(*, "group_sizes")= int  244 300
 - attr(*, "biggest_group_size")= int 300
 - attr(*, "labels")='data.frame':  2 obs. of  2 variables:
  ..$ haul: Factor w/ 2 levels "17:47h","1:44h": 1 2
  ..$ pred: Factor w/ 12 levels "C. glacialis C3",..: 5 5
  ..- attr(*, "vars")= chr  "haul" "pred"
  ..- attr(*, "drop")= logi TRUE
person Ben Bolker    schedule 13.03.2018