重塑数组时R重新映射xaxis
R remap xaxis when reshaping array
考虑以下示例:
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
索引只是原始矩阵中的坐标。有没有一种优雅的方法可以通过某种重新映射来替换这些坐标?例如,可以让我非常轻松地对 dsm
的时间列执行 {0:0, 1:t[1], 2:t[2], 3:t[3]...}
的操作?我可以看到我可以在 for 循环中手动执行此操作,但这似乎非常不必要,而且我确信有一些内置功能可以为我执行此操作。有什么建议吗?
library(ggplot2)
ggplot(melt(data.table(a, time = t), "time"),
aes(time, value, group = variable)) +
geom_line()
考虑以下示例:
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
索引只是原始矩阵中的坐标。有没有一种优雅的方法可以通过某种重新映射来替换这些坐标?例如,可以让我非常轻松地对 dsm
的时间列执行 {0:0, 1:t[1], 2:t[2], 3:t[3]...}
的操作?我可以看到我可以在 for 循环中手动执行此操作,但这似乎非常不必要,而且我确信有一些内置功能可以为我执行此操作。有什么建议吗?
library(ggplot2)
ggplot(melt(data.table(a, time = t), "time"),
aes(time, value, group = variable)) +
geom_line()