[英]R - Add trace in Plotly if condition is met
我正在創建一個散點圖,如果滿足條件,我希望通過跡線連接點。 我的數據分為多個序列,如果X和Y坐標是同一序列的一部分,我希望有一個軌跡。 我的示例數據和代碼段如下。
樣本數據:
X Y Seq
1 3 1
2 5 1
1 4 1
3 1 2
4 5 2
6 3 3
3 4 3
在此示例中,我希望跟蹤點(1、3),(2、5),(1、4),跟蹤點(3、1),(4、5)和點(6、3),(3 ,4)追蹤。 如果有新的序列開始,則跟蹤中應該有一個中斷。
碼:
plot_ly (data, x = data$X , y = data$Y,
type = "scatter",
mode="markers")%>%
add_trace(data$Seq==shift(data$Seq, type="lag"), mode="lines")
問題在於您使用add_trace
。 當此參數需要現有的繪圖/軌跡時,您add_trace
我假設的數據子集傳遞給add_trace
的第一個參數。 問題是,由於要使用%>%
進行傳遞,因此該函數將繼承原始數據,而忽略您的子集。
請注意,即使我的變量NO
與該圖無關,以下內容也會給出相同的圖:
X=c(1,2,1,3,4,6,3)
Y=c(3,5,4,1,5,3,4)
seq=c(1,1,1,2,2,3,3)
dataX <- data.frame(X,Y,seq)
NO <- "this won't work"
plot_ly plot_ly (dataX, x = dataX$X , y = dataX$Y,
type = "scatter",
mode="markers") %>%
add_trace(NO, mode="lines")
你可以解決這個inherit=F
,但隨后它不會工作,因為add_trace
試圖添加一些情節NO
這是不是一個陰謀(和你的子集將不會工作)
plot_ly (dataX, x = dataX$X , y = dataX$Y,
type = "scatter",
mode="markers") %>%
add_trace(NO, mode="lines", inherit=FALSE)
## No trace type specified:
添加跟蹤時,您希望在x=
和y=
明確顯示。 然后,您可以允許它自動繼承上一個圖/跡線,或指定一個。 至於您要執行的操作,可以使用循環來構建它:
#make the plot
p <- plot_ly (dataX, x = dataX$X , y = dataX$Y,
type = "scatter",
mode="markers")
#build it up
for(i in levels(factor(dataX$seq))){
#subset data
dataFilt <- dataX[dataX$seq==i,]
#add it
p <- add_trace(p, x=dataFilt$X, y=dataFilt$Y,mode="lines",color ='yellow')
}
p
每次都會制作一個新系列,因此需要一些工作。 您可以隱藏圖例,它看起來正確:
p %>%
layout(showlegend = FALSE)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.