Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 不同x尺度上不同数据集的核密度叠加直方图_R_Ggplot2_Kernel_Histogram_Overlay - Fatal编程技术网

R 不同x尺度上不同数据集的核密度叠加直方图

R 不同x尺度上不同数据集的核密度叠加直方图,r,ggplot2,kernel,histogram,overlay,R,Ggplot2,Kernel,Histogram,Overlay,对于我的数据的不同子集,我有两个图: 数据>0的一个核估计图 数据==0的一个直方图(实际上只有一个箱子) 我想使用ggplot2将其合并到一个绘图中 问题是,ggplot继续为整个x轴绘制内核线 values <- c(25.222222, 6.000000, 2.057143, 0.000000, 2.142857, 0.000000, 73.666667, 4.081081, 43.133333, 18.937500, 60.822222, 23.37931

对于我的数据的不同子集,我有两个图:

  • 数据>0的一个核估计图
  • 数据==0的一个直方图(实际上只有一个箱子)
  • 我想使用ggplot2将其合并到一个绘图中

    问题是,ggplot继续为整个x轴绘制内核线

    values <- c(25.222222, 6.000000, 2.057143, 0.000000, 2.142857, 0.000000, 73.666667, 
                4.081081, 43.133333, 18.937500, 60.822222, 23.379310, 54.954412, 8.492308, 
                67.646250, 15.885000, 38.585859, 46.810606, 31.565152, 39.813889, 
                40.620000, 25.958000, 54.821429, 9.000000, 33.040476, 50.329670, 43.525641, 
                33.508696, 34.265385, 57.003544, 36.690434, 48.074074, 70.372222, 
                77.602564, 29.997436, 71.739683, 11.320000, 2.938776, 10.101562, 35.037956)
    
    df <- data.frame(variable = "TH_part", value=values)
    
    library(ggplot2)
    
    p1.kernel <- ggplot(subset(df, value!=0), aes(x=value, y=..density.., color=variable)) +
      geom_density() + 
      scale_x_continuous(limits = c(0, 200)) + theme_bw()
    
    p1.kernel + 
      geom_histogram(data=subset(df, value==0), 
                     aes(x=value, y=..density.., fill=variable), 
                     breaks=seq(-10,200,by=10), alpha=0.4) + 
      scale_x_continuous(limits = c(-10, 200)) + 
      theme(legend.position="none")
    
    然后,条/箱应该小得多(因为只有一部分在开始时是0)

    额外:使用
    stat\u density(adjust=0.5)
    控制内核平滑因子将在绘图中为我提供第二个内核。如何在上面的叠加图中使用较小的平滑因子

    编辑:

    在GGamba的帮助下,我得到了这个图,y轴上有计数:


    在这里,0-entries的bin相对于密度要小得多。

    您需要使用
    trim
    参数。从
    ?几何密度

    修剪 仅当在一个绘图中显示多个密度时,此参数才起作用。如果默认值为FALSE,则在整个数据范围内计算每个密度。如果为TRUE,则在该组的范围内计算每个密度:这通常意味着估计的x值不会对齐,因此您将无法堆叠密度值

    您还可以在
    geom_density
    中使用
    adjust
    参数


    价值观完美,非常感谢!但是我的0-entries的垃圾箱怎么会这么高呢?钢筋不应该比密度小很多吗?(请参见上面的编辑和打印)
    
    ggplot(df, aes(x=value, y=..density.., color=variable)) +
      geom_histogram(breaks=seq(0,200,by=10), fill="white") +
      geom_density() + scale_x_continuous(limits = c(0, 200)) + theme_bw()