【发布时间】:2016-05-06 22:47:27
【问题描述】:
我正在尝试按照此处的示例制作一个简单的堆叠密度图:Create a stacked density graph in ggplot2。
我正在使用融化的数据,但是当我尝试在 y 轴上用“值”绘制它时,我得到了一个错误。
这是我的原始数据:
> str(bug)
'data.frame': 39 obs. of 10 variables:
$ year : int 2006 2006 2006 2006 2006 2006 2006 2006 2006 2006 ...
$ SampleDate : Factor w/ 39 levels "01-Aug-07","02-Jun-06",..: 21 32 2 11 19 28 37 8 17 24 ...
$ Oligochaeta : int 905 604 371 991 213 144 1 14 5 5 ...
$ Copepoda : int 586 352 12 602 45 24 3 1 1 8 ...
etc.
这就是我使用融化的方式:
> mbug <- melt(bug, id.vars=c("year", "SampleDate"))
我更正了日期格式:
> mbug$date1 <- as.Date(mbug$SampleDate, "%d-%b-%y")
这是熔化的数据:
> str(mbug)
'data.frame': 312 obs. of 5 variables:
$ year : int 2006 2006 2006 2006 2006 2006 2006 2006 2006 2006 ...
$ SampleDate: Factor w/ 39 levels "01-Aug-07","02-Jun-06",..: 21 32 2 11 19 28 37 8 17 24 ...
$ variable : Factor w/ 8 levels "Oligochaeta",..: 1 1 1 1 1 1 1 1 1 1 ...
$ value : int 905 604 371 991 213 144 1 14 5 5 ...
$ date1 : Date, format: "2006-05-18" "2006-05-26" "2006-06-02" "2006-06-09" ...
我使用 ggplot 处理熔融数据:
> ggplot(mbug, aes(x=date1, y=value)) +
+ geom_density(aes(fill=variable), position="stack")
+ facet_wrap(~ year, nrow=1) + theme(text = element_text(size = 22))
最后出现了这个错误:
Error in eval(expr, envir, enclos) : object 'y' not found
最终,我希望将变量称为“分类单元”并将值称为“丰度”,但我以后总是可以在 ggplot 中做到这一点。现在,我的主要目标是能够绘制 y!
提前致谢。
【问题讨论】:
-
将
aes(x=date1, y=value)更改为aes(value)(或aes(x=value))。密度图是给出单个变量分布的平滑直方图。密度绘制在 y 轴上,由 ggplot 在内部计算。 -
使用内置数据框复制此错误:
ggplot(mtcars, aes(x=wt, y=mpg, fill=factor(cyl))) + geom_density()。要获得所需的情节:ggplot(mtcars, aes(x=mpg, fill=factor(cyl))) + geom_density().