我有一个事件概率随时间变化的图(x轴是时间,y轴是概率变量)。除了在数据中,我有一个可以具有值0或1的变量。我要找的是当二进制值为0时概率线具有黑色,而当二进制变量为1时概率线为红色。所以目前我只有概率图。我不知道如何合并二进制变量。
plot_ly(df,x=df$time,y=df$probab,type="line")
答案 0 :(得分:1)
为了方便起见,我举了几个步骤的例子:
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没有将红色和黑色字符串识别为颜色。不知道如何解决这个问题。