R plotly simple boxplot突出显示最新值

R plotly simple boxplot highlighting the most recent value

我可能有一个简单的问题,但我找不到实现我需要的方法。我有一个简单的箱线图如下:

end_dt <- as.Date("2021-02-12")
start_dt <- end_dt - (nrow(iris) - 1)
dim(iris)
dates <- seq.Date(start_dt, end_dt, by="1 day")
df <- iris
df$LAST_VAL <- "N"
df[3, 'LAST_VAL'] <- "Y"

df1 <- df[,c("Sepal.Length","LAST_VAL")]
df1$DES <- 'Sepal.Length'
colnames(df1) <- c("VALUES","LAST_VAL","DES")

df2 <- df[,c("Sepal.Width","LAST_VAL")]
df2$DES <- 'Sepal.Width'
colnames(df2) <- c("VALUES","LAST_VAL","DES")

df <- rbind(df1, df2)

fig <- plot_ly(df, y = ~VALUES, color = ~DES, type = "box") %>% layout(showlegend = FALSE)  

我现在想做的是为每个箱形图添加一个红色标记,仅对应于 LAST_VAL =“Y”的值。这将允许我查看给定的每个图的分布,以查看最新值所在的位置。 我尝试使用 https://plotly.com/r/box-plots/ 上的信息,但我不知道该怎么做。 谢谢

以下解决方案在代码方面有点太长了。但是,它应该给你你所要求的。我认为应该在之后添加箱线图,例如:

fig <- plot_ly(df[df$LAST_VAL=="Y",], 
               x=~DES, y = ~VALUES, color = ~DES, type = "scatter", colors='red') %>% 
layout(showlegend = FALSE) %>% 
add_boxplot(data = df[df$DES=="Sepal.Length",], x = ~DES, y = ~VALUES, 
              showlegend = F, color = ~DES,
              boxpoints = F, fillcolor = 'white', line = list(color = c('blue'))) %>% 
add_boxplot(data = df[df$DES=="Sepal.Width",], x = ~DES, y = ~VALUES, 
              showlegend = F, color = ~DES,
              boxpoints = F, fillcolor = 'white', line = list(color = c('green')))