Я хочу создать сеть стран путем совместного участия в кинопроизводстве, но с моим кодом у меня получится обратный результат (фильмы по странам).
Я читал, что «двудольные графы имеют атрибут вершины типа в igraph, это логическое значение и FALSE для вершин первого рода и TRUE для вершин второго типа». Итак, я думаю, что я должен изменить типы вершин, но не знаю как.
К сожалению, данные находятся в закрытом доступе, поэтому загрузить их невозможно, но в последней матрице (а) страны представлены в виде столбцов, а фильмы - в виде строк. Я также пытался перевернуть df, но это не помогло (вершинами на графике были страны, как я хотел, но между ними не было связей).
#I load df and make some changes with it
movies <- read_csv("~/shared/mi_2018/data/movies.csv") %>%
select(movie_id, production_countries)
movies_with_countries = extract_json2(df = movies, col = "production_countries")
a = spread(movies_with_countries, key = production_countries_sep,
value = production_countries_v)
row.names(a) <- a$movie_id
a = a %>% select(-movie_id, -production_countries)
a[is.na(a)] <- 0
#Here I make a bipartite graph, but the result is reverse compared to what I expected
bg = graph.incidence(a)
V(bg)$type
pr = bipartite.projection(bg)
q = get.adjacency(pr$proj1,sparse=FALSE,attr="weight")
plot(pr$proj1,edge.width=E(pr$proj1)$weight^2,edge.color="black",vertex.label=V(pr$proj1)$name)
Я ожидаю, что на графике будет представлена взаимосвязь стран по их совместному участию в кинопроизводстве, но в фактическом графике речь идет о фильмах, связанных по странам.