hse_sna_2024_2 - Daria-Maltseva/pajek GitHub Wiki

Семинар 2. Ввод сетевых данных и визуализация

В рамках этого семинара вы получите навыки по работе в программе Pajek:

  • познакомитесь с разными форматами ввода сетевых данных
  • узнаете, как считывать дополнительную информацию об атрибутах узлов
  • научитесь самостоятельно создавать сетевые объекты
  • научитесь открывать имеющийся набор сетевых данных для дальнейшей работы с ним
  • научитесь базовым образом визуализировать сети

(2) Ввод сетевых данных и визуализация

Различные форматы сетевых данных

На семинаре мы говорили про разные возможные форматы для ввода сетевых данных в программу Pajek. Ниже представлены примеры того, как может быть "записана" рассмотренная нами сеть.

image

Посмотрите по очереди на эти примеры и определите, какой формат записи сетевых данных в них реализован:
example1
example2
example3

А теперь посмотрите на эти примеры и найдите, в чем разница:
example1
example2
example3

Вы можете самостоятельно сохранить сеть с координатами, "включив" эту возможность (но если сохранение положения узлов не принципиально, эту опцию нужно отключать, т.к. она увеличивает размер сетевого файла).

Pajek main window - Options - Read-Write - Save coordinates of vertices

Координаты позволяют нам указывать конкретное местоположение узлов на сетевом графе. Pajek дает возможность делать визуализации в 3D, поэтому присутствует и третья колонка в координатах, которая по умолчанию устанавливается как 0.5.

Посмотрим внимательное, как записывается информация по сети с разными типами отношений (каждый тип отношений фиксируется отдельно):
example

Создание сетевого файла и визуализация

В примере ниже мы научимся создавать сетевой файл и визуализировать его с использованием дополнительной информации -- векторов (информация об индивидуальных характеристиках узлов) и кластеров / partitions (информация о принадлежности узлов в классам).

Задание: Для сети ниже создайте файл формата net, откройте его в Pajek и визуализируйте.
Для отображения размера узлов и цвета разделения на группы используйте файлы форматов vec и clu.
sem11

Сеть:

% HSE seminar 1; 2022
*Vertices 6
1 "a" 
2 "b" 
3 "c" 
4 "d" 
5 "e" 
6 "f" 
*Arcs
1 2
2 1
1 4
1 6
2 6
3 3
5 3
5 6
*Edges
2 5
3 4

Файл net

Вектор (рассчитан на основании степени узла = degree centrality):

*Vertices 6
1
2
3
2
1
3

Файл vec
Обратите внимание, что центральность по degree для узла С = 3, т.к. у него имеется петля (поэтому он больше структурно похожего на него узла D).

Кластеринг / разделение на группы:

*Vertices 6
1
2
1
2
1
2

Файл clu

Визуализация
Посмотрите, что меняется при изображении разных компонентов и их комбинаций:

Draw -- Network
Draw -- Network + First Partition
Draw -- Network + First Partition + First Vector 

В окошке Draw зайдите в меню Options и поменяйте цвета и размеры узлов, связей и лейблов.

Options -- Size -- of Vertices / Lines / Arrows etc. 
Options -- Colors -- Edges / Arcs / Vertcies -- Select [выбираем цвет в палитре] 

После применения кластеринга цвет узлов определяется через

Partition Colors -- for Vertices

Нужно открыть палитру и выбрать цвет для кластеров 1 и 2 (в файле их 2).
Чтобы отображались различные цвета линий, проверьте, отжата ли галочка в пункте:

Lines - Grey Scale

(в обратном случае это хорошая опция для визуализации больших сетей, которая показывает силу связи градиентом серого).
Сохраните картинку:

Export -- 2D -- JPEG -- RUN [картинка будет максимально приближена к тому, что вы видите на экране] 
Export -- 2D -- SVG -- General [картинка будет отличаться от изображения на экране и будет опосредована параметрами в:] 
Export -- Options

Практические задания

Задание 1

Вручную внесем данные о коммуникациях между 6 студентами, создадим сетевой файл, откроем и визуализируем его в программе Pajek. При этом взаимные связи переведем из арок (arcs) в ребра (edges), а размер узлов сделаем соотносимым с популярностью студентов (количеством входящих связей).

  1. Создаем список из всех узлов
% Network 1; 2024
*Vertices 6
1 "Anna" 
2 "Boris" 
3 "Carl" 
4 "Dan" 
5 "Elen" 
6 "Fedor" 

Скачать файл

  1. Вносим информацию о связях в матрицу по ссылке.

  2. Объединяем узлы и связи: дописываем *Matrix после списка узлов и вставляем матрицу.
    Сохраняем в разрешении net.
    Скачать файл с матрицей

  3. Открываем файл в Pajek

File - Network - Read

или используем кнопку Read Network (первая желтая)
image

  1. Трансформируем связи в сети
Network - Create New Network - Transform - Arcs to Edges - Bidirected only - SUM
  1. Рассчитываем входящую центральность (степень узла)
Network - Create vector - Centrality - Degree - Input 
  1. Визуализируем сеть с учетом вектора
Draw - Network + First vector 

Задание 2

Рассмотрим работу с готовыми сетевыми файлами. На примере набора данных про забастовки посмотрим, какой информацией мы обладаем и попробуем представить ее на визуализации. Затем рассчитаем базовые сетевые характеристики.

  1. Скачаем набор данных
    Informal communication within a sawmill on strike - скачать здесь или здесь.

  2. Посмотрим на данные
    Перед нами файл формата paj, который содержит два файла - сеть в формате net и кластеринг (разделение на группы) в формате clu.

*Network Strike.net
*Vertices     24
      1 "Frank"                                  0.0410    0.6175    0.5000  ellipse
      2 "Gill"                                   0.1781    0.5504    0.5000
      3 "Ike"                                    0.2640    0.4079    0.5000
      4 "Mike"                                   0.3465    0.3333    0.5000
      5 "Hal"                                    0.2995    0.4824    0.5000
...
*Arcs
*Edges
      1      2       1
      2      3       1
      2      5       1
...
*Partition Strike_groups.clu
*Vertices 24
      2
      2
      2
      2
...
  1. Откроем файл в Pajek
File - Pajek project file - Read 
  1. Визуализируем сеть
Draw - Network + First Partition

Посмотрите, какие будут изменения, если использовать комбинации ниже:

Draw -- Network
Draw -- Network + First Partition + First Vector 

В окне Draw пройдите в меню Options и измените цвета и размеры узлов, связей и лейблов.

Options -- Size -- of Vertices / Lines / Arrows etc. 
Options -- Colors -- Edges / Arcs / Vertcies -- Select [выбираем цвет в палитре] 

После применения разделения на группы (partition), цвет узлов определяется через

Partition Colors -- for Vertices

Нужно открыть палитру и выбрать цвет для трех кластеров. Чтобы отобразить разные цвета линий проверьте, не поставлена ли галочка в опции:

Lines - Grey Scale

(иначе это хорошая опция при визуализации больших сетей, показывающая силу связи градиентом серого цвета). Сохраните картинку:

Export -- 2D -- JPEG -- RUN [the picture will be as close as possible to what you see on the screen] 
Export -- 2D -- SVG -- General [the picture will differ from the image on the screen and will be mediated by the parameters in:] 
Export -- Options

Более подробная информация по визуализации представлена здесь.

Полезная информация

  1. При сохранении файлов указывайте их расширение в названии и сохраняйте, используя кавычки, например "Network1.net" или "Partition1.clu". Тогда файлы будут сразу же сохраняться в нужном формате.
  2. Если вы потеряли окно с отчетом (Report) или какое-то другое, то их можно восстановить, используя опцию:
Info - Child Windows - Report Windows - Show 
  1. Сохраняйте сделанный анализ в виде Pajek project file с помощью:
File - Pajek Project File - Save
  1. Чтобы сохранить детали по визуализации, которые вы сделали, используйте:
File - Ini File - Save
  1. Установите себе ограничение по числу узлов для визуализации, чтобы программа не зависла, когда Вы работаете с очень большими сетями и случайно нажали на кнопку Draw.
Options - Read / Write - Max vertices to Draw [1000] 

Выполнение заданий этого семинара было показано на ДОД магистерской программы "Аналитика данных и прикладная статистика" Мастер-класс DASS «Программа Pajek для анализа и визуализации комплексных сетей».