如何更改 ggdag_classic 对象的边缘颜色?

问题描述 投票:0回答:1

我以为这很简单,但我似乎无法破解它。我正在使用 r 中的 ggdag 包来绘制 DAG。我想更改 DAG 中所有边的颜色(或透明度)。

使用 ggdag_classic 帮助文件中的示例:

dag <- dagify(
  y ~ x + z2 + w2 + w1,
  x ~ z1 + w1,
  z1 ~ w1 + v,
  z2 ~ w2 + v,
  w1 ~ ~w2
)

ggdag_classic(dag, text_col="grey") +
  theme_dag()

这会更改文本的颜色,但我也想更改边缘颜色。

我认为

geom_dag_edges
可能会有所帮助,但这只会添加一组额外的边缘,从而产生双箭头,而
scale_edge_colour_manual
似乎什么也没做。

使用包中的其他函数重新创建

ggdag_classic
可能是最简单的方法,但我尝试使用源代码执行此操作(https://rdrr.io/cran/ggdag/src/R/ggdag .R),但无法构建与
ggdag_classic

相匹配的绘图
r colors ggdag
1个回答
0
投票

如果你从原来的情节开始:

p <- ggdag_classic(dag, text_col="grey") +
  theme_dag()

p

enter image description here

您可以删除现有的边缘

ss <- unlist(lapply(p$layers, function(i) class(i$geom)[1] != 'GeomDAGEdgePath'))
p$layers <- p$layers[ss]

现在您可以自由添加您喜欢的任何类型的边缘:

p + geom_dag_edges(edge_color = 'red')

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.