创造"意大利面"具有平滑/抖动的纵向图

时间:2015-11-01 18:14:28

标签: r plot

我正在尝试使用从0到4的数字组成的数据创建意大利面条图,这些数据是在15个不同的时间点获得的。它是一个大数据,所以不能粘贴在这里,但在尝试

matplot(x,y,type="l",lty=1,col="#00000020")

这是我得到的情节enter image description here

理想情况下,我希望它看起来像这样 enter image description here

我怎样才能顺利"线条并使它们重叠较少,就像在较低的情节中一样?如果可能的话,不使用ggplot2。

1 个答案:

答案 0 :(得分:2)

只需以多种方式平滑数据some examples

nr <- 200
mm <- t(matrix(sample(0:4, nr * 15, replace = TRUE), nr))
set.seed(1)
mm[sample(length(mm), nr * 15 / 20)] <- NA
x <- 1:15

par(mfrow = c(1,2))
matplot(mm, type = 'l', lty = 1, xlim = c(0,15), ylim = c(-5,10),
        col = adjustcolor('black', alpha.f = .1))
plot('mm', xlim = c(0,15), ylim = c(-5,10), panel.last = grid(), bty = 'l')
for (ii in 1:ncol(mm)) {
  dd <- data.frame(y = mm[, ii], x = x)
  lo <- loess(y ~ x, data = dd, na.action = 'na.omit')
  # lo <- loess(mm[, ii] ~ x)
  xl <- seq(min(x), max(x), (max(x) - min(x)) / 1000)
  lines(xl, predict(lo, xl), col = adjustcolor('black', alpha.f = .1))
}

enter image description here