在R中绘制两个不同的分布函数。获取具有正值范围的轴

时间:2014-04-01 10:17:41

标签: r plot histogram probability-density

我遵循这种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

1 个答案:

答案 0 :(得分:0)

如果您需要坚持使用的特定meansd但排除任何负值,您可以过滤数据集,例如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)

enter image description here