【问题标题】:Only one of two densities is shown in ggplot2ggplot2 中仅显示两种密度中的一种
【发布时间】:2013-07-11 22:42:42
【问题描述】:

所以我有两组数据(长度不同),我试图将它们分组并显示密度图:

dat <- data.frame(dens = c(nEXP,nCNT),lines = rep(c("Exp","Cont")))
ggplot(dat, aes(x = dens, group=lines, fill = lines)) + geom_density(alpha = .5)

当我运行代码时,它会吐出关于不同长度的错误,即 "参数暗示不同的行数:x, y"

然后我将代码扩充为:

dat <- data.frame(dens = c(nEXP,nCNT),lines = rep(c("Exp","Cont"),X))

其中 X 是较长参数的长度,因此“行”的长度将与 dens 的长度匹配。

现在的问题是,当我绘制数据时,我只会得到一个密度图....我知道应该有两个,因为用绘图/线条绘制密度显然是两个不相等的重叠分布,所以我假设错误在于分组......

希望这是有道理的。

【问题讨论】:

  • c() 函数将这两个向量合并为一个向量。请改用list()。我还认为 rep() 调用可能是错误的,您需要使用 each 参数。 (但这可能与列表结构不能很好地混合,所以你应该真正做的是发布一个工作示例。

标签: r plot ggplot2 statistics


【解决方案1】:

所以我不知道为什么,但基本上我只需要手动执行 rep() 函数:

A<-data.frame(ExpN, key = "exp")
B<-data.frame(ConN,key = "con")
colnames(A) <- c("a","key")
colnames(B) <- c("a","key")
dat <- rbind(A,B)
ggplot(dat, aes(x = dens, fill = key)) + geom_density(alpha = .5) 

【讨论】:

    【解决方案2】:

    您需要告诉rep 重复每个元素多少次才能使其对齐

    dat <- data.frame(dens = c(nEXP,nCNT),
                      lines = rep(c("Exp","Cont"), c(length(nEXP),length(nCNT)))
    

    这应该会给你一个dat,你可以在你的ggplot调用中使用。

    【讨论】:

      猜你喜欢
      • 2013-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-05
      • 2018-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多