Вопрос или проблема
Я хочу программно создавать небольшие, действительно простые схемы, как на рисунке ниже:
Источник: https://commons.wikimedia.org/wiki/File:LampFlowchart.svg
Какой хороший выбор открытого программного обеспечения для этого?
Для простых графиков я мог бы рекомендовать d2lang
#file: d2-example-lamp-bulb.d2
Лампа не работает: Проблема {
Лампа подключена? -> Лампочка перегорела?:да
Лампочка перегорела? -> Замените лампочку:да
}
Вызовите его с помощью командной строки:
~/apps/d2/bin/d2 -w d2-example-lamp-bulb.d2 d2-example-lamp-bulb.svg
Это генерирует
С 2022 года:
Классическое программное обеспечение для этого – Graphviz и его язык “dot”.
На самом деле есть несколько оберток для многих языков программирования. Многие приложения построены на графвизе, см. статью в Википедии.
Есть очень обширный репозиторий “Awesome Graphviz” с множеством ссылок, связанных с графвизом.
На днях я наткнулся на DiagrammeR, но это требует значительных навыков веб-разработки и полной приверженности современной экосистеме R (R + RStudio + htmlwidgets + JavaScript + d3.js + viz.js + mermaid.js).
Но смотрите 2-минутное демонстрационное видео на их главной странице. В нем показан почти чистый код графвиза (обернутый в одну функцию R). От простого графика до более сложного графика, с анимациями и “горячей перезагрузкой”.
Предыдущие связанные вопросы о Graphviz и альтернативы
Вы можете использовать https://app.diagrams.net/ бесплатно в вашем браузере. Это легко в использовании!
Нажмите на Создать новую диаграмму
, и вы сможете выбрать из различных шаблонов для блок-схем:
СТАРТ
|
|– Объявить переменные L, P, Q, R
|
|– Ввод R (количество членов в последовательности Фибоначчи)
|
|– P = 0
|
|– Q = 1
|
|– L = 2
|
|– Отобразить P
|
|– Отобразить Q
|
|– ПОКА (L <= R)
| |
| |– R = P + Q
| |
| |– Отобразить R
| |
| |– P = Q
| |
| |– Q = R
| |
| |– L = L + 1
|
|– КОНЕЦ ПОКАЗА
|
КОНЕЦ
Ответ или решение
Для автоматического создания простых блок-схем существует множество эффективных и бесплатных решений с открытым исходным кодом. В этом ответе я опишу несколько популярных инструментов, которые могут помочь вам в этом.
1. D2
D2 (https://d2lang.com) — это современный язык для описания графов, который позволяет легко и последовательно создавать визуализации, включая блок-схемы. Его синтаксис интуитивно понятен, что делает его отличным выбором для быстрого прототипирования простых диаграмм. Например, для создания блок-схемы, аналогичной приведённой вами, вы можете использовать следующий синтаксис:
#file: d2-example-lamp-bulb.d2
Lamp doen't work: Problem {
Lamp plugged in? -> Bulb burned out?:yes
Bulb burned out? -> Replace bulb:yes
}
После создания файла достаточно выполнить команду в терминале:
~/apps/d2/bin/d2 -w d2-example-lamp-bulb.d2 d2-example-lamp-bulb.svg
Это создаст файл SVG с вашей блок-схемой.
2. Graphviz
Graphviz (https://graphviz.org) — это классический инструмент, широко используемый для построения графов и диаграмм. Он использует язык разметки "dot", что позволяет вам легко создавать визуализации. Graphviz хорошо поддерживает множество языков программирования через соответствующие библиотеки и API.
Пример использования:
digraph G {
"Lamp doesn't work?" -> "Lamp plugged in?";
"Lamp plugged in?" -> "Bulb burned out?";
"Bulb burned out?" -> "Replace bulb";
}
Для рендеринга используйте команду:
dot -Tsvg input.dot -o output.svg
3. DiagrammeR
DiagrammeR (https://rich-iannone.github.io/DiagrammeR/) — это пакет для R, который позволяет создавать графические визуализации, включая блок-схемы. Он требует некоторой подготовки и понимания экосистемы R, но может предложить мощные возможности.
Пример кода на R:
library(DiagrammeR)
grViz("digraph {
Lamp_does_not_work [label='Lamp doesn''t work?']
Lamp_plugged_in [label='Lamp plugged in?']
Bulb_burned_out [label='Bulb burned out?']
Replace_bulb [label='Replace bulb']
Lamp_does_not_work -> Lamp_plugged_in
Lamp_plugged_in -> Bulb_burned_out
Bulb_burned_out -> Replace_bulb
}")
4. Diagrams.net (ранее Draw.io)
Веб-приложение Diagrams.net (https://app.diagrams.net/) предоставляет простой интерфейс для создания диаграмм, включая блок-схемы. Вы можете создавать схемы прямо в браузере, используя готовые шаблоны, что делает его удобным и доступным решением.
Заключение
Все перечисленные инструменты — D2, Graphviz, DiagrammeR и Diagrams.net — имеют свои уникальные преимущества и недостатки. Выбор следует делать, основываясь на ваших конкретных требованиях и уровня подготовки. Например, если вы ищете решение с минимальным порогом вхождения, Diagrams.net будет отличным выбором. Если же вам нужно программное создание диаграмм, D2 или Graphviz подойдут лучше.
Не забывайте также изучить ресурсы сообщества и документацию для оптимизации вашего рабочего процесса.