У меня есть вопрос. Я использую igraph и tidygraph. В igraph информация об узле выглядит так:
1 A young
2 B young
3 C young
4 D adult
5 E adult
6 F old
7 G old
8 H old
9 I old
10 J old
Однако, когда я использовал те же данные для тидиграфа, узел C помечается как взрослый, а не молодой ....... Что не так с моим кодом ?? Как правильно назначить узлы $ cara c?
#https://www.r-graph-gallery.com/249-igraph-network-map-a-color.html
# library
library(igraph)
set.seed(1)
# create data:
links <- data.frame(
source=c("A","A", "A", "A", "A","J", "B", "B", "C", "C", "D","I"),
target=c("B","B", "C", "D", "J","A","E", "F", "G", "H", "I","I"),
weight=(sample(1:4, 12, replace=T))
)
nodes <- data.frame(
name=LETTERS[1:10],
carac=c( rep("young",3),rep("adult",2), rep("old",5))
)
# Turn it into igraph object
network <- graph_from_data_frame(d=links, vertices=nodes, directed=F)
# Make a palette of 3 colors
library(RColorBrewer)
coul <- brewer.pal(3, "Set1")
# Create a vector of color
my_color <- coul[as.numeric(as.factor(V(network)$carac))]
# Make the plot
plot(network, vertex.color=my_color)
library(ggraph)
library(tidygraph)
#
g<-as_tbl_graph(links, directed = FALSE)
g %>%
mutate(degree = centrality_degree(),
community = as.factor(V(network)$carac) )%>%
ggraph(layout = "lgl") +
geom_edge_link(aes(width = 1),
alpha = 0.8,
colour = "lightgray") +
scale_edge_width(range = c(0.1, 1)) +geom_node_point(aes(colour = community, size = degree)) +
geom_node_text(aes(label = name), repel = TRUE) +
theme_graph()