【发布时间】:2018-05-21 23:00:34
【问题描述】:
我有一个 R 函数,它绘制了一些堆叠在一起的曲线(参见代码下方的图片)。
不过,我想知道如何调整曲线之间的距离(see 蓝色箭头),使曲线看起来不那么平坦?
另外,是否可以使用polygon 而不是lines 来绘制这些曲线?
stacked = function(a, b, lo, hi, d, Bi = 55, n = 1e2){
h = list()
for(i in 1:length(d)){
p = function(x) get(d[i])(x, a, b)
prior = function(x) p(x)/integrate(p, lo, hi)[[1]]
likelihood = function(x) dbinom(Bi, n, x)
posterior = function(x) prior(x)*likelihood(x)
h[i] = list(curve(posterior, ty = "n", ann = FALSE, yaxt = "n", xaxt = "n", add = i!= 1, bty = "n", n = 1e3))
}
plot(matrix(c(rep(c(.4, .8), each = length(d))), length(d), 2), rep(1:length(d), 2), ty = "n", xlim = 0:1, ann = FALSE, xaxt = "n", ylim = c(1, length(d)+.4))
for(i in 1:length(d)){
lines(h[[i]]$x, h[[i]]$y+i, ty = "l", xpd = NA, col = i)
}
}
# Example of use:
stacked(lo = 0, hi = 1, a = 2, b = 3, d = c("dgamma", "dnorm", "dcauchy", "dbeta", "dlogis", "dweibull"))
【问题讨论】: