R & Gephi ( R & Gephi ):границы в сети импортируются неправильно с помощью пакета rgexf

StackOverflow https://stackoverflow.com//questions/22026659

  •  21-12-2019
  •  | 
  •  

Вопрос

У меня проблема с пакетом R "rgexf".В частности, у меня есть проблема с края сети, которую я импортирую в Gephi.В R я могу создать базу данных вершин

>vertices
   Id Label
1   1     1
2   2     2
3   3     3
4   4     4
5   5     5
6   6     6
7   7     7
8   8     8
9   9     9
10 10    10

и база данных ребер (точнее, одного ребра)

>edges 
      Source Target
    1      5      9

Я создаю файл .gexf, используя

  >write.gexf(output = path_gexf, nodes = vertices, edges = edges,  defaultedgetype = "undirected")

где path_gexf это просто путь к выходному файлу (который называется example.gexf).
Я открываю example.gexf с помощью Gephi (бета-версия 0.8.2).На изображении 1:enter image description here

вы можете просмотреть отчет об импорте в Gephi:количество вершин и ребер указано правильно;Я вручную меняю тип графика на неориентированный и импортирую все данные в окно Лаборатории данных.

  1. Вопрос 1. Почему я должен указывать "неориентированный" в окне отчета об импорте, если я уже сделал это в функции write.gexf?

На изображении2

enter image description here

вы можете видеть, что после импорта тип графика автоматически переключается на "направленный" и на самом деле ни одно ребро не импортируется.

На изображении 3

enter image description here

у нас есть список вершин:все в порядке.Метки и идентификаторы импортированы правильно.На изображении 4

enter image description here

вы можете увидеть окно Лаборатории данных для определения ребер:кромка не импортируется, как уже отмечалось на рисунке 2.Я действительно не понимаю, почему не импортируется edge.

  1. Вопрос 2.Как исправить импорт файла example.gexf?На уровне R-кода все гладко, и вершины / ребра корректно генерируются моим кодом.Проблемы возникают с Gephi.

Замечания:У меня есть много файлов .gexf с проблемами, связанными с импортом ребер;во многих случаях импортируется только несколько ребер с неправильными "Source" и "Target".Как ни странно, параллельные ребра всегда правильно подсчитываются в соответствии с их кратностью.

Прошу прощения за длинный пост.

Редактировать:некоторые тесты с фиктивным R-кодом

Я провел несколько тестов, используя код @James Tobin (спасибо!).Это прекрасно работает и на моем компьютере.Я проводил тесты с графами с 2 ребрами:все тесты прошли нормально.Затем я перешел к случаям с 3,4 ребрами, используя

require(rgexf)
vertices <- as.data.frame(cbind(seq(1,10),seq(1,10)))
colnames(vertices) <- c('Id','Label')
edges <- as.data.frame(cbind(c(5,1,2),c(1,1,3)))
colnames(edges) <- c('Source','Target')
write.gexf(nodes=vertices,edges=edges,
           defaultedgetype = "undirected")

и

require(rgexf)
vertices <- as.data.frame(cbind(seq(1,10),seq(1,10)))
colnames(vertices) <- c('Id','Label')
edges <- as.data.frame(cbind(c(5,1,4,2),c(2,3,1,2)))
colnames(edges) <- c('Source','Target')
write.gexf(nodes=vertices,edges=edges,
           defaultedgetype = "undirected")

В обоих случаях код XLM является правильным без ошибок.идентификаторы узлов и ребер, метки, источники и целевые объекты.

В чем заключаются проблемы?В случае с 3 ребрами отчет об импорте в Gephi корректен, в то время как в окне data laboratory edge ребро не отображается

<edge id="1" source="1" target="1" weight="1.0"/>

В случае с 4 ребрами ребро

 <edge id="0" source="5" target="2" weight="1.0"/>

вместо этого он отсутствует.

Я начинаю верить, что ошибка есть в Gephi 0.8.2, а не в моем коде.

Есть какие-нибудь предложения / комментарии?

Это было полезно?

Решение

Вопрос 1:Несмотря на то, что вы уже указали график как неориентированный в файле gexf, directed используется по умолчанию, хотя нажатие на него немного раздражает, по крайней мере, это не так уж и важно.С точки зрения безопасности проще позволить пользователю дважды проверить, какой тип графика он импортирует, чем потенциально сделать неправильный выбор.Это занимает 2 секунды, не такая уж большая проблема.

Вопрос 2:Я скопировал ваш пример

require(rgexf)
vertices <- as.data.frame(cbind(seq(1,10),seq(1,10)))
colnames(vertices) <- c('Id','Label')
edges <- as.data.frame(cbind(5,9))
colnames(edges) <- c('Source','Target')
write.gexf(output='testgex.gexf',nodes=vertices,edges=edges,
          defaultedgetype = "undirected")

но у меня нет никаких проблем с ребрами.enter image description here enter image description here enter image description here

Возможно, вы можете включить свой точный код, который не работает?Возможно, ваши ребра не находятся в форме data.frame?Просто догадываюсь, потому что я не смог повторить вашу ошибку.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top