В нашей работе и жизни нам, программистам, приходится рисовать диаграммы во многих ситуациях, например, диаграммы в PPT, некоторые мнемосхемы для учебных заметок и наиболее распространенные блок-схемы, которые широко используются в работе.
В Window у нас есть много полезных инструментов, таких какVisio
,EA
и т.п. Эти программы также очень просты в использовании, но все они имеют тот недостаток, что они слишком сложны. Нам нужна определенная художественная база и изучение множества программных операций, чтобы нарисовать очень простую блок-схему.
Более того, что еще хуже, так это то, что когда спрос меняется, его очень трудно изменить, и это часто влияет на весь организм. Так часто, когда я слышу об изменениях в требованиях, у Лян Сю по спине мурашки по коже...
Позже, при представлении Великого Бога, Лян Сюй начал использовать артефакт. Этот артефакт не требует от вас понимания искусства и не требует глубокого понимания работы программного обеспечения.Процесс рисования похож на процесс написания программного обеспечения.Всего несколько строк кода могут выразить ваши мысли.
Более того, вам не нужно беспокоиться о макете, вам не нужно беспокоиться о его изменении, и вам даже не нужна мышь, чтобы сделать очень красивую работу!
Этот артефакт:dot
Заказ!
Этот артефакт также имеет версию графического интерфейса, которая называетсяGraphviz
, но Лян Сюй привык к командной строке, что обычно делается из-под командной строки.
Давайте сначала посмотрим, что он может сделать. Следующие фотографии взяты с официального сайта:
Это лишь некоторые из фотографий, больше фотографий можно посмотреть на официальном сайте:
http://www.graphviz.org
Это очень мощное программное обеспечение, если хорошо его освоить, можно рисовать очень красивые работы, и вы не боитесь, что продакт-менеджеры изменят свои потребности. Однако в большинстве случаев нам не нужно использовать его расширенные функции, и часто некоторые очень простые функции могут удовлетворить более 80% потребностей нашей работы.
Установка этого программного обеспечения очень проста, достаточно выполнить следующую команду:
sudo apt install graphviz
После небольшого ожидания установка прошла успешно. Тогда можно повеселиться~
Давайте сначала взглянем на работу уровня Hello world.
Сначала создайтеtest.dot
Файл (конечно его можно назвать и по другому), содержимое файла следующее:
graph g{
"Hello" -- "world"
}
Затем выполните следующие команды:
dot -Tpng -o test.png test.dot
После этого в текущем каталоге генерируется самая простая картинка ниже, очень простая?
Кратко представим синтаксис команды DOT. В файле test.dotgraph
означает, что картина无向图
, то есть на соединительной линии нет стрелок. Ему соответствуетdigraph
,Выражать有向图
, соединительная линия имеет стрелки.
Описание картины находится в{}
Он также поддерживает комментарии, стиль которых аналогичен стилю языка C.//
для однострочных комментариев,/**/
Используется для многострочных комментариев.
Как упоминалось выше, команда "точка" очень эффективна. Здесь представлены лишь некоторые из ее основных применений. Если вы выучите эти основные команды, вы сможете справиться с примерно 80% работы. Для более продвинутого использования, пожалуйста, обратитесь к его официальному сайту.
узел
Подобно языкам сценариев, узлы можно использовать напрямую без объявления. Для узлов мы обычно устанавливаем следующие свойства:
- форма форма
- этикетка этикетка
- тип стиля, заполненный или незаполненный
- цвет линии цвет
- цвет заливки цвет заливки
Эти атрибуты представляют собой пару квадратных скобок после узла[]
установить в. Во многих случаях наши атрибуты узла точно такие же, тогда мы можем определитьnode
, и установите его, то все атрибуты узла в графе будут такими же, как у узла. Если узел хочет быть особенным, просто установите его индивидуально.
graph g{
node [shape = "box", style = "filled", color = "red", fillcolor = "green"] //设置节点的默认形状,类型,颜色,填充颜色
a [shape = "ellipse", fillcolor = "yellow", label = "Hello"] //对某个节点进行单独设置
b [label = "world"]
a -- b
a -- c //不对c进行设置,使用默认属性
d [shape = "circle",label = "cicle"] //d单独设置属性
c -- d
}
соединительная линия
Соединительные линии делятся на направленные ребра и ненаправленные ребра в зависимости от наличия или отсутствия стрелок. Его общие свойства следующие:
- тип стиля, сплошной или пунктирный
- цвет разъема цвет
- этикетка этикетка
- labelfontcolor цвет шрифта метки
- метка начала содержимого метки
- содержимое конечной метки taillabel
- Между декоративной этикеткой и соединительной линией есть соединительная линия.
Для направленных ребер вы также можете установить положение начальной и конечной точек, используяe, s, w, n
выражать东南西北
, также могут быть объединены для представления, пожалуйста, смотрите следующий пример для деталей.
Подобно узлам, соединители также могут иметь свойства по умолчанию, используяedge
Выражать. Вы также можете настроить свойства, если вы не используете свойства по умолчанию.
digraph edge_settings {
edge [color = "green", decorate = false] //设置边的默认属性
node [shape = "polygon", sides = 4, color = "blue"]
a -> b [style = "dotted", color = "red", label = "a to b"] //设置style、color、label
b: se -> c: w [headlabel = "end", taillabel = "start"] //设置边从b的“东南方”出发,从c的“西方”结束,设置有向边起点和终点的label
{c, f} -> {d, e} [label = "multi-lines", decorate = true] //可以用这种方式同时画多条边
}
картина
Язык DOT может описывать как неориентированные графы, так и ориентированные графы: graph идентифицирует неориентированные графы, а digraph идентифицирует ориентированные графы. Для настройки свойств графа обычно используются следующие:
- размер
- этикетка этикетка
- Позиция метки labelloc, обычно устанавливается на t (вверху) или b (внизу)
- labeljust выравнивание меток, например слева, справа, по центру и т. д.
- цвет фона bgcolor
- макет rankdir, например слева направо или сверху вниз
Граф также может содержать подграфы, и подграфы должны начинаться сcluster
начать как префикс. Например, картинка на главной странице официального сайта, то есть первая картинка в этой статье, содержит подкартинки в картинке, исходный код такой:
digraph graph_settings {
start [shape = "Mdiamond"]
end [shape = "Msquare"]
subgraph cluster_sub1 {
label = "process #1"
labelloc = "t"
bgcolor = "gray55"
node [style = "filled", color = "white"]
a0 -> a1 -> a2 -> a3 -> a0
}
subgraph cluster_sub2 {
label = "process #2"
labelloc = "t"
color = "blue"
node [style = "filled", color = "black", fillcolor = "gray55"]
b0 -> b1 -> b2 -> b3
}
start -> {a0, b0}
a1 -> b3
b2 -> a3
{a3, b3} -> end
}
резюме
Использование команды "точка" для рисования очень простое и гибкое. Для новичка в дизайне это не может быть слишком удобно! Его функции очень мощные.В этой статье рассказывается только о том, что он очень часто используется, но также есть некоторые базовые функции, которые очень практичны.Освоение этих функций может справиться с большинством сценариев в работе. Но если вы хотите сделать более крутой эффект, вам нужно внимательно изучить информацию на его официальном сайте.