根据节点的位置在缠结图中着色线

时间:2019-07-23 09:34:59

标签: r ggplot2 ggtree

我正在使用以下代码创建缠结图:

$query = "SELECT * FROM t_user";
$result = mysqli_query($dbc,$query);
$encryption_service = new EncryptionService;

$newUserSet = [];
foreach ($result as $row){
    $row['password'] = $encryption_service->encrypt($password);
    $newUserSet[] = $row;
}

我要做的是根据节点的位置为线着色。换句话说,如果直线是直线,这意味着它们在两棵树中的位置相同,则颜色应为x,而如果它们已更改,则颜色应为y。

类似这样的事情: enter image description here

为此提供一个图例来解释颜色也很好。

1 个答案:

答案 0 :(得分:1)

您可以在dd中构造一列,以检查该行是否为水平。在这里,我按标签分组,并检查唯一ID的数量是否为1。然后将该行用于行color中的aes参数。

dd <- dd %>% group_by(label) %>% mutate(is.horiz = n_distinct(node) == 1)
pp + 
  geom_line(aes(x, y, group=label, color = is.horiz), data=dd) +
  scale_color_manual(values = c('TRUE' = "lightblue", 'FALSE' = "purple")) +
  theme(legend.position = c(.9,.9)) +
  labs(color = 'Horizontal Nodes')

enter image description here

您可以玩弄线条的颜色和所有内容的名称。