在直方图上需要平滑的线条。为什么geom_density会绘制两条线?

时间:2018-03-13 02:41:51

标签: r ggplot2 histogram smoothing density-plot

我的直方图存在问题,我希望在其上添加平滑线,最好是多项式平滑。

我最接近的是添加了平滑geom_densitygeom_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()

给出: enter image description here

为什么它会绘制两条似乎是范围的线?

干杯谢谢!

1 个答案:

答案 0 :(得分:3)

问题是你有分组 tibble;显然(令我惊讶的是)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