Программное обеспечение с открытым исходным кодом для автоматической генерации простых блок-схем.

Вопрос или проблема

Я хочу программно создавать небольшие, действительно простые схемы, как на рисунке ниже:

flowchart

Источник: 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/ бесплатно в вашем браузере. Это легко в использовании!

Нажмите на Создать новую диаграмму, и вы сможете выбрать из различных шаблонов для блок-схем:

модели блок-схем на 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 подойдут лучше.

Не забывайте также изучить ресурсы сообщества и документацию для оптимизации вашего рабочего процесса.

Оцените материал
Добавить комментарий

Капча загружается...