是否可以根据变量对时间序列进行多色处理?

Is it possible to multicolor a timeseries based on a variable?

我有兴趣通过根据另一个变量为时间序列着色来为时间序列图添加另一个维度的信息。以下是我尝试使用 xts 包执行此操作:

library(xts)
# create time series
set.seed(100)
tsvalues <- rnorm(100)
dates <- seq(as.Date("2020-01-01"),length=100,by="days")
xts1 <- xts(x=tsvalues, order.by=dates) 
# create the coloring variable and coloring value
colvar <- rnorm(50, 15, 5)
coloring <- colorRampPalette(terrain.colors(40))
colorval <- coloring(40)[colvar]
# plot
plot(xts1, col=colorval)

请注意,整个系列只是一种颜色,而我们希望颜色会根据对应于每个数据点的 colorval 值而变化。例如,包含正确着色的基本图(不是时间序列图)可以按如下方式完成:

绘图(tsvalues,pch = 20,col = colorval)

使用 xts 不是必要的要求,所以如果有一些其他包甚至 Base R 本身可以很好地完成它,那肯定会起作用

您可以使用 lines.

library(xts)
# create the coloring variable and coloring value
colvar <- rnorm(33, 15, 5)
coloring <- colorRampPalette(terrain.colors(33))
colorval <- coloring(33)[colvar]
# plot
plot(xts1, type="n")
Map(function(x, y) lines(xts1[x], col=colorval[y]), 
    as.data.frame(t(cbind(1:100, 1:100+1, 1:100+2, 1:100+3)[seq(1, 98, 3),])), 
    1:33)


数据:

# create time series
set.seed(100)
tsvalues <- rnorm(100)
dates <- seq(as.Date("2020-01-01"), length=100, by="days")
xts1 <- xts(x=tsvalues, order.by=dates)