【问题标题】:Density plot for negative values with ggplot2ggplot2 负值的密度图
【发布时间】:2014-05-26 10:05:34
【问题描述】:

我经常为我的图表使用 ggplot2 包 quiet,包括内核密度图。到目前为止,我还没有遇到奇怪的错误,但现在我遇到了:

as.environment(where) 中的错误:缺少“where” *

我的数据向量中有负值,范围从 -1000 到 -100。对于正值,同一段代码正在工作,但不适用于负值。下面是小插曲:

sign <- c(-1000, -800, -700, -100, -500, -250, -100, -850, -100, -700)
p <- ggplot(plot_data, aes(x=sign, fill=Status)) + geom_density(alpha = 0.5) + xlab ("Signature")+ ylab("Density")

这是plot_data 数据框的dput

structure(list(Sample = c(107453L, 107458L, 107457L, 107462L, 
107454L, 107459L, 107455L, 107460L, 107456L, 107461L), Status = c("Control", 
"Control", "CyP Treated (1 Hr)", "CyP Treated (1 Hr)", "CyP Treated (3 Hrs)", 
"CyP Treated (3 Hrs)", "LPS Treated (3 Hrs)", "LPS Treated (3 Hrs)", 
"Cyp+LPS Treated (3 Hrs)", "Cyp+LPS Treated (3 Hrs)"), sign = c(-1000L, 
-800L, -700L, -100L, -500L, -250L, -100L, -850L, -100L, -750L
)), .Names = c("Sample", "Status", "sign"), class = "data.frame", row.names = c(NA, -10L))

任何人都可以帮我解决这个问题,因为没有一个值是 NA?

【问题讨论】:

  • 如果不知道您的 plot_data 中有什么内容,我们无能为力。制作一个独立的小示例,说明您可以在此处包含的小数据集的问题。
  • 我在上面的问题中编辑了表格并添加了表格(plot_data 数据框)。
  • 向我们展示它如何处理正数据,因为我看不出你在哪里设置了 geom_density 需要的“y”美学。如果我将 sign 更改为正值,我会得到同样的错误。
  • @Spacedman:我猜这不是正值或负值相关的问题,因为对于其他数据集,我在上面的小插图中得到了正确的结果,但对于这个特定的数据集没有。这也不应该与“y”美学有关,因为我用相同的代码得到了预期的结果。

标签: r ggplot2


【解决方案1】:

使用您的数据框和此代码(您的示例的分解版本):

p <- ggplot(plot_data, aes(x=sign, fill=Status))
p <- p + geom_density(alpha=0.5)
p <- p + xlab ("Signature") + ylab("Density")
p <- p + theme_bw()
p

我得到的错误(与你的不同)是:

Error in exists(name, env) : argument "env" is missing, with no default

如果我重新创建您的数据框,但为每个 Status 添加一个额外样本:

set.seed(1492)
nsamp=3
dat <- data.frame(Status = rep(c("Control", "CyP Treated (1 Hr)", 
                                 "CyP Treated (3 Hrs)", "LPS Treated (3 Hrs)", 
                                 "Cyp+LPS Treated (3 Hrs)"), each=nsamp), 
                 sign = sample(seq(-1000, -100, by=50), 5*nsamp, replace=TRUE))
p <- ggplot(dat, aes(x=sign, fill=Status))
p <- p + geom_density(alpha=0.5)
p <- p + xlab ("Signature") + ylab("Density")
p <- p + theme_bw()
p

我明白了:

(每个 Status 生成的数据帧只有 2 个读数的失败方式与原始数据帧相同)。

如果每个Status 的读数更多,您能否粘贴dput(plot_data)

【讨论】:

  • 感谢 hrbrmstr,这对我来说也是一样的,不是两个,而是在每个状态组中发生两个以上的读数。但不幸的是,我没有额外的真实读物。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-01
  • 2014-11-19
  • 1970-01-01
  • 2012-06-09
  • 2016-05-16
相关资源
最近更新 更多