在ggplot中绘制线条我得到x轴长度错误
plotting lines in ggplot I get x-axis length errors
我无法使用 ggplot 在另一个之上绘制 7 个时间序列。为什么这个可重现的代码不起作用? signal 是一个因子变量,有 7 个值,跨越 700 个值(每个值 100 个值),但如果我更改 x aes() 为 1:700。我希望每个信号都从 1 绘制到 100。为什么没有发生这种情况?
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~.)
您可能需要类似 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~.)
产量:
我无法使用 ggplot 在另一个之上绘制 7 个时间序列。为什么这个可重现的代码不起作用? signal 是一个因子变量,有 7 个值,跨越 700 个值(每个值 100 个值),但如果我更改 x aes() 为 1:700。我希望每个信号都从 1 绘制到 100。为什么没有发生这种情况?
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~.)
您可能需要类似 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~.)
产量: