我有多个具有多个段的路径.如何用相同的颜色为每条路径的第N段着色?
例如:
require(dplyr) require(ggvis) df <- data.frame(x = runif(10,0,10), y = runif(10,0,10), group=c(rep(5,5),rep(10,5)), colorIdx=rep(c(1:5), 2)) df$group = factor(df$group) color_fun = colorRampPalette(c("yellow","blue"),5) myColors = color_fun(5) df$color = myColors[df$colorIdx] df %>% group_by(group) %>% ggvis(~x, ~y, strokeWidth:=~group) %>% layer_paths(stroke :=~color)
产生的路径是单色的 - 我希望它们从黄色到蓝色.
使用ggplot2,可以通过以下方式完成:
require(ggplot2) ggplot(df, aes(x=x, y=y, group=group, colour=colorIdx, size=group)) + geom_path() + scale_colour_gradient("", low="#FED863", high="#2A6EBB", limits=c(1,4))
约束似乎是数据的group_by组中的所有段都需要是相同的颜色.你可以通过为每个段创建一个人工组来解决它,每个组只连接两个点.这意味着除了每个原始组的第一行和最后一行之外,您必须将数据中的每一行加倍.我已经通过手工选择您的数据行来说明这一点; 有一种方法可以更方便地进行,但这是否值得取决于您的实际用例.
这有点麻烦,但肯定是一种解决方法.
df2 <- df[c(1,2,2,3,3,4,4,5, 6,7,7,8,8,9,9,10), ] df2$group2 <- c(rep(letters[1:4], each=2), rep(letters[6:9], each=2)) df2 %>% group_by(group2) %>% ggvis(~x, ~y, strokeWidth:=~group) %>% layer_paths(stroke :=~color)