R - 基于条件的情节中的组织样线的不同颜色

问题描述 投票:0回答:2

我有一个看起来像这样的data.frame(df)

    mean      t value
    0.004      3.12
    0.021      3.41 
      .         .
      .         .
   -0.067     -3.60

我的实际data.frame有90列(90个均值和90个t值)

现在我绘制了第一列的值(均值)

mean<-df$mean
timestamp<-seq(from=-30, to=60)
plot(mean~timestamp, type="h", lwd=2, col="darkgrey", main="test")

结果看起来像这样

enter image description here

现在我想让我的情节线采用不同的颜色,取决于第二列的t值。

例如:如果t值> 2或<-2,则绘制的平均线应为黑色,如果t值介于-2和2之间,则应为灰色

我希望有办法做到这一点;)感谢你的帮助

r dataframe plot colors
2个回答
0
投票

这将完成这项工作。只需要确定符合您条件的数据,然后使用lines添加它

df = data.frame(mean = rnorm(91), tvalue = rnorm(91,4,1.5))
mean<-df$mean
timestamp<-seq(from=-30, to=60)
t_pos = t_neg = mean
t_pos[df$tvalue< -2 & df$tvalue >2] = NA
t_neg[df$tvalue> -2 & df$tvalue < 2] = NA
plot(mean~timestamp, type="h", lwd=2, col="darkgrey", main="test")
lines(timestamp,t_pos,col="darkgrey", type = "h")
lines(timestamp,t_neg,col="black", type ="h")

0
投票

您可以在df中创建另一个列,该列指定基于tvalue的颜色。然后,您可以在colplot参数中指定此列。

df$cols <- ifelse(df$tvalue < -2 | df$tvalue > 2, "black", "gray")
with(df, plot(mean~timestamp, type="h", lwd=2, col=cols, main="test"))

数据

set.seed(510)
df <- data.frame(mean = sample(seq(-0.1, 0.2, length.out = 91), 91), 
                 tvalue = sample(seq(-3, 3, length.out = 91), 91))
df$timestamp <- seq(from=-30, to=60)

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.