Используем электронную таблицу для рисования графа
Ранее было рассказано, как нарисовать граф с помощью пакета Graphviz. А что делать, если имеются некоторые данные в электронной таблице и необходимо построить граф?
Рассмотрим две задачи. Первая задача будет построение иерархии для последующего анализа. В файле примеров это будет вкладка test1:
Данными у нас заполнены первые три колонки. Дальше мы делаем три колонки с данными без пропусков, для чего используем функции ЕСЛИ и ЕПУСТО. Дальше собираем текст, используя функцию СЦЕПИТЬ. Обратите внимание, чтобы в результирующей строке получилась кавычка, необходимо её дублировать:
=СЦЕПИТЬ(“”””;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"
}
Второй задачей будет построение графа взаимных долгов на основании табличных данных
В результате получаем граф:
digraph test2{
"Вася"->"Петя"[label=100]
"Вася"->"Коля"[label=200]
"Коля"->"Петя"[label=300]
}
В данной заметке рассмотрены самые простые примеры, однако, используя эту идею можно при формировании команд на языке dot в excel использовать условное форматирование, например, задавая форму узлов, стрелок, цвета и т.д.