代码之家  ›  专栏  ›  技术社区  ›  val

在ggplot中绘制直线我得到x轴长度错误

  •  1
  • val  · 技术社区  · 7 年前

    我不能用ggplot绘制7个时间序列。为什么这个可复制的代码不起作用? 信号 是一个因子变量,有7个值,跨越700个值(每个值100个值),但不知何故,只有更改 在aes()中是1:700。我希望每个信号从1到100绘制。为什么不这样呢? enter image description here

    signal_to_noise_ratio = 10
    t=seq(0.1,10,0.1)
    
    df <- data.frame(truesignal = sin(t))
    df2 <- df
    
    for (i in seq(5)) {
      noise = rnorm(t)
      k <- sqrt(var(t)/(signal_to_noise_ratio*var(noise)))
      data_wNoise = t + k*noise
      df2[,i] = sin(data_wNoise)
    }
    df[,2:6] = df2
    df[,2:7] = rowSums(df2)
    
    colnames(df) <- c("truesignal", "noisy1", "noisy2", "noisy3", "noisy4", "noisy5",
                      "stacked")
    melt_df <- melt(df,measure.vars = 1:7, variable.name=c("signal"))
    
    ggplot(data=melt_df,
           aes(x=t,y=value,colour=factor(signal))) +
      geom_path() +
      facet_grid(signal~.)
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   jay.sf    7 年前

    你可能需要一个id变量。

    melt_df$t.2 <- rep(1:100, 7)
    
    library(ggplot2)
    ggplot(data=melt_df,
           aes(x=t.2, y=value, colour=factor(signal))) +
      geom_path() +
      facet_grid(signal~.)
    

    产量:

    enter image description here