如何获取以下代码在(1,2)和(3,2)之间划一条线?
plot_ly(x=c(1,2,3),
y=c(1,2,3),
type='scatter',
mode='markers',
color=as.factor(c('a','b','c')))%>%
add_trace(x=c(1,3,NA),
y=c(2,2,NA),
mode='lines')
R plotly add_trace to a chart with color groups处的解决方案不起作用。谢谢。
编辑:使用inherit=FALSE
可以完成工作(感谢Jonny Phelps)
plot_ly(x=c(1,2,3),
y=c(1,2,3),
type='scatter',
mode='markers',
color=as.factor(c('a','b','c')))%>%
add_trace(x=c(1,3),
y=c(2,2),
mode='lines',
inherit = FALSE,
line=list(color='black'))
答案 0 :(得分:1)
您的评论中的答案。有时候我对Plotly感到非常痛苦。这种作品,但传说是一团糟,需要一些工作。
挑战是从一个系列中制作多个彩色线条。我不认为Plotly本机处理这些问题(希望看到更好的示例)。因此,我已经循环播放了。使用group=
选项,您也许可以得到一些更优雅的东西。
我在其中添加了第4个值,因为它更好地显示了输出。
编辑:我有一个真正的痛点,颜色是“ a”。如果您看第一个p,它是绿色的。循环后,它变成棕色。这就是为什么我添加“行+标记”而不是“标记”的原因。有人会知道如何改善这一点,但这是另一种情节痛苦
library(plotly)
library(RColorBrewer)
dat <- data.frame(x1=c(1,2,3,4), y1=c(1,2,3,4), mycolor=c('a','b','c','d'),
x2=c(1,2,3,NA), y2=c(1,2,3,NA),
stringsAsFactors = FALSE)
colours <- brewer.pal(length(unique(dat$mycolor)), "Dark2")
p <- plot_ly(data=dat, x=~x1, y=~y1, colors=colours) %>%
add_trace(mode='markers', color=~mycolor, data=dat,
x=~x1, y=~y1)
p
N <- nrow(dat)-1
for(i in 1:N){
p <- p %>% add_trace(data=dat[i:(i+1),], x=~x2, y=~y2, mode='lines+markers',
type="scatter", color=colours[i],
inherit=FALSE)
}
p