我的数据的不同子集有两个图:
我想用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")
内核图在限制范围内:
内核加直方图但超出限制:
如何在xaxis上使用不同的限制?
此外,为什么这些图表不再相关? 如果我看一下:
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()
然后bar / bin应该小得多(因为开头只有一部分是0)。
额外:使用stat_density(adjust = 0.5)
来控制内核平滑因子将在图中给出第二个内核。如何在上面的叠加图中使用较小的平滑因子?
修改
在GGamba的帮助下,我得到了这个情节,y轴计数:
这里,0条目的bin相对于密度要小得多。
答案 0 :(得分:0)
您需要使用trim
参数。来自?geom_density
:
<强>修剪强> 只有在一个图中显示多个密度时,此参数才有意义。如果为默认值,则在整个数据范围内计算每个密度。如果为TRUE,则在该组的范围内计算每个密度:这通常意味着估计的x值不会排列,因此您将无法堆叠密度值。
您也可以在adjust
中使用geom_density
参数。
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)
ggplot(subset(df, value!=0), aes(x=value, y=..density.., color=variable)) +
geom_density(trim = TRUE, adjust = .5) +
geom_histogram(data=subset(df, value==0),
aes(x=value, y=..density.., fill=variable), alpha=0.4, breaks=seq(-10,200,by=10)) +
scale_x_continuous(limits = c(-10, 200)) +
theme_bw() +
theme(legend.position="none")
由reprex package(v0.2.0)创建于2018-05-16。