产生密度图,给出域和发生率

时间:2012-07-16 12:55:03

标签: r ggplot2

ggplot geom_histogramgeom_density都期望 x 美学,其中每个都会看到变量在其域中的发生率。

我有一个函数输出两个域和某些分布的发生率(即不以可数形式呈现事件,而是以已计数的形式呈现)。

实际值集来自外部库,因此将在此处设置示例。我想绘制这个分布:

data <- data.frame(depth=seq(0,20), incidence=seq(0,20)^1.5)
ggplot() + geom_density (aes(x=depth, y=incidence), data=data, fill='lightblue')

以上不起作用。当然,我可以自己使用x = depth或x = cause并生成一个图,但是,两者都不正确,因为x变量被认为是我们计算事件的变量。

我可以使用数据框并为每个深度生成行,其中行数对应于发生率#。这在分数发生率方面变得更加复杂,但可以扩展。

问题:有没有办法在给定发生率而不是事件的情况下在ggplot中生成密度图?如果没有,我想可以使用类似的东西:

c (apply (data, 1, function(r) rep(r[1], r[2])), recursive=TRUE)

生成事件的离散近似。 ggplot中的直接方式会更好。

1 个答案:

答案 0 :(得分:0)

显而易见的事情是

qplot(depth, data = data, weight = incidence, geom = "histogram", binwidth = 1)

如果您需要使用geom_histogram执行此操作,则会稍长一些

ggplot(data , aes(x = depth)) + 
       geom_histogram(binwidth = 1, aes(weight = incidence))

生产

enter image description here