考虑以下示例:
nt <- 5
a <- array(runif(10), dim=c(nt, 2))
t <- seq(0, 10, length.out=nt)
a <- data.frame(a)
其中a是具有5
观察值和2
个特征的时间序列,t
由每个观察值的时间索引向量组成。我想将数组a
绘制为矢量,使得x轴是时间索引,y轴是数组a
中的原始强度。
我可以使用以下代码执行此操作:
xlabel <- 'time'
ylabel <- 'intensity'
legend='feature'
dsm = melt(a)
colnames(dsm) <- c(xlabel, legend, ylabel)
aplot <- ggplot(data=dsm, aes_string(x=xlabel, y=ylabel, group=legend, color=legend)) +
geom_line(alpha=.2) +
scale_y_continuous()
我将希望将观察结果绘制为0, 1, ...
而不是t
的元素,因为当我融化a
时,它只会折叠原始数组,以便x, y
索引只是原始矩阵中的坐标。是否有一种优雅的方式来替换这些坐标,并进行重新映射?比方说,允许我很容易地{0:0, 1:t[1], 2:t[2], 3:t[3]...}
到dsm
的时间列?我可以看到我可以在for循环中手动执行此操作,但这似乎是非常不必要的,我相信有一些内置会为我做这个。有什么建议吗?
答案 0 :(得分:1)
library(ggplot2)
ggplot(melt(data.table(a, time = t), "time"),
aes(time, value, group = variable)) +
geom_line()