gpt4 book ai didi

r - 控制 ggraph 中的构面顺序

转载 作者:行者123 更新时间:2023-12-05 00:15:36 30 4
gpt4 key购买 nike

我想使用分面绘制图形,其中面板之间的边缘不同。面板按字母顺序自动排序(按照 ggplot 中的惯例)。一个简单的例子:

library(igraph)
library(ggraph)

g <- make_empty_graph() +
vertices(1:2) +
edges(1:2, 2:1, g = c('b', 'a'))

ggraph(g, 'kk') +
geom_edge_link(arrow = grid::arrow()) +
geom_node_label(aes(label = name)) +
facet_edges(~g)

enter image description here

这很好,节点位置被保留,但边缘因 g而异.

但是,我想选择刻面出现的顺序。所以在这种情况下,首先 b然后 a ,就像我在创建上面的图表时订购它们一样。

ggplot一个会改变因子的顺序 g .但是,创建布局不显示 g :
create_layout(g, 'kk')

           x             y name ggraph.orig_index circular ggraph.index
1 -0.9021575 -1.410825e+00 1 1 FALSE 1
2 -1.0000000 1.224606e-16 2 2 FALSE 2


手动将边缘属性更改为因子确实会更改排序,但标签被强制为数字:
g2 <- make_empty_graph() + 
vertices(1:2) +
edges(1:2, 2:1, g = factor(c('b', 'a'), levels = c('b', 'a')))

ggraph(g2, 'kk') +
geom_edge_link(arrow = grid::arrow()) +
geom_node_label(aes(label = name)) +
facet_edges(~g)

enter image description here

如何为刻面进行自定义排序?

最佳答案

一种可能的解决方案是先强制因子(作为问题中的第二个图),然后使用自定义标签器,简单地重复实际因子标签:

my_lab <- function(labels) {
list(g = c('b', 'a'))
}

ggraph(g2, 'kk') +
geom_edge_link(arrow = grid::arrow()) +
geom_node_label(aes(label = name)) +
facet_edges(~g, labeller = my_lab)

enter image description here

关于r - 控制 ggraph 中的构面顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44199760/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com