Март 15

Используем электронную таблицу для рисования графа

Ранее было рассказано, как нарисовать граф с помощью пакета Graphviz. А что делать, если имеются некоторые данные в электронной таблице и необходимо построить граф?

Рассмотрим две задачи. Первая задача будет построение иерархии для последующего анализа. В файле примеров это будет вкладка test1:

snimok-ekrana-2016-03-15-v-11-26-22
Данными у нас заполнены первые три колонки. Дальше мы делаем три колонки с данными без пропусков, для чего используем функции ЕСЛИ и ЕПУСТО. Дальше собираем текст, используя функцию СЦЕПИТЬ. Обратите внимание, чтобы в результирующей строке получилась кавычка, необходимо её дублировать:

=СЦЕПИТЬ(“”””;E2;”””->”””;F2;””””)

Полученный результат копируем в программу генерации графом, добавляем необходимую преамбулу и, удалив пустые строки, получаем:

digraph test{
   node [shape = box];
"Некая цель"->"Альтернатива 1"
"Некая цель"->"Альтернатива 2"
"Некая цель"->"Альтернатива 3"
"Некая цель"->"Альтернатива 4"
"Альтернатива 1"->"Критерий 1"
"Альтернатива 1"->"Критерий 2"
"Альтернатива 1"->"Критерий 3"
"Альтернатива 1"->"Критерий 4"
"Альтернатива 1"->"Критерий 5"
"Альтернатива 2"->"Критерий 1"
"Альтернатива 2"->"Критерий 2"
"Альтернатива 2"->"Критерий 3"
"Альтернатива 2"->"Критерий 4"
"Альтернатива 2"->"Критерий 5"
"Альтернатива 3"->"Критерий 1"
"Альтернатива 3"->"Критерий 2"
"Альтернатива 3"->"Критерий 3"
"Альтернатива 3"->"Критерий 4"
"Альтернатива 3"->"Критерий 5"
"Альтернатива 4"->"Критерий 1"
"Альтернатива 4"->"Критерий 2"
"Альтернатива 4"->"Критерий 3"
"Альтернатива 4"->"Критерий 4"
"Альтернатива 4"->"Критерий 5"
}

test1

Второй задачей будет построение графа взаимных долгов на основании табличных данных

snimok-ekrana-2016-03-15-v-11-37-47

В результате получаем граф:

digraph test2{
"Вася"->"Петя"[label=100]
"Вася"->"Коля"[label=200]
"Коля"->"Петя"[label=300]
}

test2

В данной заметке рассмотрены самые простые примеры, однако, используя эту идею можно при формировании команд на языке dot в excel использовать условное форматирование, например, задавая форму узлов, стрелок, цвета и т.д.




Опубликовано 15.03.2016 Тушавин В.А. в категории "Используем свободное ПО", "Пишем ВКР