построение линий в ggplot я получаю ошибки длины оси X - PullRequest
0 голосов
/ 28 октября 2018

Я не могу нанести 7 временных рядов один поверх другого, используя ggplot.Почему этот воспроизводимый код не работает? сигнал - это факторная переменная с 7 значениями, охватывающими 700 значений (по 100 значений каждый), однако значения каким-то образом будут отображаться только в том случае, если я изменю x в 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 Ответ

0 голосов
/ 28 октября 2018

Возможно, вы хотите что-то вроде переменной 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

...