我遵循这种https://stackoverflow.com/a/3542115/3483997方法,以便在同一数据框中集成2个直方图(具有不同的人口)。
ROS_SPITFIRE <- data.frame(length = rnorm(100, 0.76406353, 0.500970292))
ROS_FARSITE <- data.frame(length = rnorm(398, 3.48366834170854,2.19050069588744))
#Now, combine your two dataframes into one. First make a new column in each.
ROS_SPITFIRE$veg <- 'ROS_SPITFIRE'
ROS_FARSITE$veg <- 'ROS_FARSITE'
#and combine into your new data frame vegLengths
vegLengths <- rbind(ROS_SPITFIRE, ROS_FARSITE)
#now make your lovely plot
ggplot(vegLengths, aes(length, fill = veg)) + geom_density(alpha = 0.3)
ggplot(vegLengths, aes(length, fill = veg)) + geom_density(alpha = 0.3)
ggplot(vegLengths, aes(length, fill = veg)) + geom_histogram(alpha = 0.5, aes(y = ..density..), position = 'identity')
ggplot = ggplot + xlim((0,15))
我在每个数据框中创建新列时弹出了我的问题。它会生成负值,因此我的最终分布图在X轴上具有负值。有谁知道如何解决它?
THX
答案 0 :(得分:0)
如果您需要坚持使用的特定mean
和sd
但排除任何负值,您可以过滤数据集,例如ROS_SPITFIRE[ROS_SPITFIRE$length>0,]
或对图表进行限制,例如xlim(0,12)
。
如果您可以修改分布,则可以选择不会导致负值的分布或值。 @Dave和@jbaum提供了使用sample(seq(.1, 1, by = .1), 100, replace = T)
或评估其他分发选项以便沿着这条路线前进的指导。
您还可以通过直接绘制图表并提供限制来删除一些步骤:
ggplot(ROS_SPITFIRE, aes(length, y = ..density..,fill="spitfire")) +
geom_histogram(alpha = 0.5, position = 'identity')+
geom_histogram(data=ROS_FARSITE, aes(fill="farsite"),
alpha = 0.5, position = 'identity')+
xlim(0,12)