【发布时间】:2016-10-05 09:15:25
【问题描述】:
我有一个随时间变化的事件概率图(x 轴是时间,y 轴是概率变量)。除此之外,在数据中,我有一个可以具有值 0 或 1 的变量。我正在寻找的是,当二进制值为 0 时概率线为黑色,而当二进制变量为 1 时,概率线为红色。所以目前我只有概率图。我不知道如何合并二进制变量。
plot_ly(df,x=df$time,y=df$probab,type="line")
【问题讨论】:
我有一个随时间变化的事件概率图(x 轴是时间,y 轴是概率变量)。除此之外,在数据中,我有一个可以具有值 0 或 1 的变量。我正在寻找的是,当二进制值为 0 时概率线为黑色,而当二进制变量为 1 时,概率线为红色。所以目前我只有概率图。我不知道如何合并二进制变量。
plot_ly(df,x=df$time,y=df$probab,type="line")
【问题讨论】:
为了方便起见,我做了一个包含多个步骤的示例:
df <- data.frame(time = 1:11
, probab = seq(0.1,0.2, by=0.01)
,bin = rep(1,11))
linecol <- c("black","red")[max(df$bin)+1]
plot_ly(df,x=df$time,y=df$probab,type="scatter", mode="lines"
, line = list(color=linecol))
我假设二进制值在数据框中,但当然也可以使用其他来源。
你对你的问题的评论使它有点复杂。我建议将您的线路分成不同的线路部分。这意味着复制数据点,以制作部分。
library(plotly)
df <- data.frame(time = 1:11
, probab = seq(0.1,0.2, by=0.01)
,bin = c(rep(0:1,5),1))
df2 <- df[c(1,rep(2:10,each=2),11),]
df2$section = rep(1:10, each=2)
linecol <- c("black","red")[df2$bin[seq(1,20,by=2)]+1]
linecol <- rep(linecol,each=2)
p <- plot_ly(df2 %>% group_by(section),x=~time,y=~probab)
add_trace(p, mode = "markers+lines",color = linecol)
由于某种原因 add_trace 没有将红色和黑色字符串识别为颜色。不知道如何解决这个问题。
【讨论】: