ggvis/layer_paths中的颜色路径段

 何霞2502856453_910 发布于 2022-12-07 12:14

我有多个具有多个段的路径.如何用相同的颜色为每条路径的第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))

在此输入图像描述

1 个回答
  • 约束似乎是数据的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)
    

    在此输入图像描述

    2022-12-11 02:11 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有