R中的动态着色

时间:2016-08-27 10:43:46

标签: r plot time-series

我有以下用于绘制一组时间序列的R代码,这些时间序列是规范化的[0,1]。我希望每条线都具有颜色强度,使得所有值<= 0.5都具有蓝色阴影,> 0.5具有橙色/黄色阴影。这就是我现在所拥有的:

data <- SOME_DATA

for(i in 1:length(data)){
  y <- data[[paste("I",i,sep = "")]]
  x <- 1:length(y)
  lo <- loess(y~x)
  ylim <- range(seq(-1,1,by=0.5))
  if(i==1){
    plot(x,y,ylim = ylim,main = "Some title",col = ifelse(y[1] < 0,'red','green'),ylab = "intensity",xlab = "time steps")
  }
  lines(predict(lo),lwd=2,ylim = ylim,col = ifelse(y[1] < 0,rgb(1,0,0,0.2),rgb(0,1,0,0.2)))
}

我怎样才能实现上述目标?

由于

2 个答案:

答案 0 :(得分:1)

使用this解决方案,您可以执行以下操作:

data <- data.frame(x= runif(100), y = runif(100))
color.gradient <- function(x, colors=c("blue","white","red"), colsteps=100) {
  return( colorRampPalette(colors) (colsteps) [ findInterval(x, seq(min(x),max(x), length.out=colsteps)) ] )
}
plot(data$x, data$y, col= color.gradient(data$x))

R plot preview

答案 1 :(得分:0)

使用ggplot可以实现稍微更可配置的图像。使用来自@jakobr的数据和color.gradient:

ggplot(data, aes(x, y))+ geom_point(col=color.gradient(data$x))+ theme_bw()

enter image description here