plantuml - 在 activity 图表上方绘制注释
plantuml - draw note above activity diagram
我在 here 找到了一个很好的 activity 图,但没有来源 code.it 如下所示:
我尝试用plantuml画出来,下面是我的代码:
@startuml
skinparam linetype ortho
(*) -down-> "clone repository"
note right
A:git clone url/to/repository
scp -p url/to/hooks/commit_msg repository/.git/hooks
end note
-down->[get an assignment] "coding"
-down-> "commit locally"
note right
B:git add xxx
git commit
end note
-down-> "review"
note right
C:git push origin refs/for/<branch>
end note
if "" then
-left->[rejected] "rework"
-up-> "recommit"
'note left
'D:git add xxx
'git commit --amend
'end note
-right-> "review"
else
--right-->[approved] "submit"
note right: E:click "submit" on on corresponding gerrit page
-up-> "update local repository"
note right
F:git pull --rebase
end note
-left->[get another task(a new cycle)] "coding"
@enduml
输出为:
很明显,还是和原图不一样:
- 注释above/below不行,不知道怎么弄(比如E注释应该在下面)
- 中心流不在一条直线上
- "submit"到"update local repository"已经改了2次
我怎样才能把它改进到和原来的输出一样?
plantuml会自动放置节点,如果你想把节点放在精确的位置,TikZ可能会做得更好:
\documentclass[convert={outfile=\jobname.png}]{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows,chains,positioning,shapes,scopes,quotes,decorations.markings,shapes.multipart,shapes.callouts}
\begin{document}
\newcommand{\ann}[3][]
{
\node[align=center, draw=noteBorderColor,fill=noteBackgroundColor,
rectangle callout, anchor=pointer,
callout relative pointer={(#2)},#1] {#3};
}
\begin{tikzpicture}[>=latex,node distance =8mm,
every text node part/.style={align=left},
start chain = going below,
base/.style = {draw, rounded corners,
minimum width=20mm, minimum height=4mm,
align=center,
inner sep=1mm, outer sep=0mm,
},
box/.style = {base, on chain, join=by {->}},
start/.style = {box,minimum size=2mm,circle,fill=black},
end/.style = {box,circle, on chain},
decision/.style = {box, diamond, aspect=1,
rounded corners=0pt, minimum size=2mm}
]
\definecolor{noteBackgroundColor}{RGB}{251,251,119}
\definecolor{noteBorderColor}{RGB}{168,0,54}
\node[start] (A) {};
\node[box] (B) {clone repository};
\ann[right=9mm of B]{182:8mm}{git clone url/to/repository \scp -p url/to/hooks/commit\_msg repository/.git/hooks};
\node[box] (C) {coding};
\node[box] (D) {commit locally};
\ann[right=9mm of D]{182:8mm}{git add xxx \ git commit};
\node[box] (E) {review};
\ann[right=9mm of E]{182:8mm}{git push origin refs/for/branch};
\node[decision] (F) {};
{[start branch]
\node[box,left=2cm of F] (G) {rework};
\node[box,on chain=going above] (H) {recommit};
\ann[above=5mm of H]{270:4mm}{git add xxx \ git commit --amend};
}
{[start branch]
\node[box,right=6cm of F] (I) {submit};
\ann[below=5mm of I]{90:4mm}{click "submit" on corresponding gerrit page};
\node[base] (J) at (I |- C) {update local repository};
\ann[right=9mm of J]{182:8mm}{git pull --rebase};
}
\draw[->] (H) -- (E);
\draw[->] (F) -- (I);
\draw[->] (J) --node [above] {get another task(new cycle)} (C);
\draw[red,->] (I) edge (J) (J) to (C);
\end{tikzpicture}
\end{document}
输出:
这是您真正需要的吗?
制作这种图片没有什么法宝,需要仔细调整箭头的长度。您可以填写“ ”以延长箭头。
源代码:
@startuml
skinparam linetype ortho
(*) -down-> "clone repository"
note right
A:git clone url/to/repository
scp -p url/to/hooks/commit_msg repository/.git/hooks
end note
-down->[get an assignment] "coding"
-down-> "commit locally"
note right
B:git add xxx
git commit
end note
-down-> "review"
note right
C:git push origin refs/for/<branch>
end note
if "" then
-left->[ rejected] "rework"
-up-> "recommit"
'note left
'D:git add xxx
'git commit --amend
'end note
-right-> [ ]"review"
else
--right-->[ approved ] "submit"
note right: E:click "submit" on on corresponding gerrit page
-up-> "update local repository"
note right
F:git pull --rebase
end note
-left->[ get another task(a new cycle)] "coding"
@enduml
我在 here 找到了一个很好的 activity 图,但没有来源 code.it 如下所示:
我尝试用plantuml画出来,下面是我的代码:
@startuml
skinparam linetype ortho
(*) -down-> "clone repository"
note right
A:git clone url/to/repository
scp -p url/to/hooks/commit_msg repository/.git/hooks
end note
-down->[get an assignment] "coding"
-down-> "commit locally"
note right
B:git add xxx
git commit
end note
-down-> "review"
note right
C:git push origin refs/for/<branch>
end note
if "" then
-left->[rejected] "rework"
-up-> "recommit"
'note left
'D:git add xxx
'git commit --amend
'end note
-right-> "review"
else
--right-->[approved] "submit"
note right: E:click "submit" on on corresponding gerrit page
-up-> "update local repository"
note right
F:git pull --rebase
end note
-left->[get another task(a new cycle)] "coding"
@enduml
输出为:
很明显,还是和原图不一样:
- 注释above/below不行,不知道怎么弄(比如E注释应该在下面)
- 中心流不在一条直线上
- "submit"到"update local repository"已经改了2次
我怎样才能把它改进到和原来的输出一样?
plantuml会自动放置节点,如果你想把节点放在精确的位置,TikZ可能会做得更好:
\documentclass[convert={outfile=\jobname.png}]{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows,chains,positioning,shapes,scopes,quotes,decorations.markings,shapes.multipart,shapes.callouts}
\begin{document}
\newcommand{\ann}[3][]
{
\node[align=center, draw=noteBorderColor,fill=noteBackgroundColor,
rectangle callout, anchor=pointer,
callout relative pointer={(#2)},#1] {#3};
}
\begin{tikzpicture}[>=latex,node distance =8mm,
every text node part/.style={align=left},
start chain = going below,
base/.style = {draw, rounded corners,
minimum width=20mm, minimum height=4mm,
align=center,
inner sep=1mm, outer sep=0mm,
},
box/.style = {base, on chain, join=by {->}},
start/.style = {box,minimum size=2mm,circle,fill=black},
end/.style = {box,circle, on chain},
decision/.style = {box, diamond, aspect=1,
rounded corners=0pt, minimum size=2mm}
]
\definecolor{noteBackgroundColor}{RGB}{251,251,119}
\definecolor{noteBorderColor}{RGB}{168,0,54}
\node[start] (A) {};
\node[box] (B) {clone repository};
\ann[right=9mm of B]{182:8mm}{git clone url/to/repository \scp -p url/to/hooks/commit\_msg repository/.git/hooks};
\node[box] (C) {coding};
\node[box] (D) {commit locally};
\ann[right=9mm of D]{182:8mm}{git add xxx \ git commit};
\node[box] (E) {review};
\ann[right=9mm of E]{182:8mm}{git push origin refs/for/branch};
\node[decision] (F) {};
{[start branch]
\node[box,left=2cm of F] (G) {rework};
\node[box,on chain=going above] (H) {recommit};
\ann[above=5mm of H]{270:4mm}{git add xxx \ git commit --amend};
}
{[start branch]
\node[box,right=6cm of F] (I) {submit};
\ann[below=5mm of I]{90:4mm}{click "submit" on corresponding gerrit page};
\node[base] (J) at (I |- C) {update local repository};
\ann[right=9mm of J]{182:8mm}{git pull --rebase};
}
\draw[->] (H) -- (E);
\draw[->] (F) -- (I);
\draw[->] (J) --node [above] {get another task(new cycle)} (C);
\draw[red,->] (I) edge (J) (J) to (C);
\end{tikzpicture}
\end{document}
输出:
这是您真正需要的吗?
制作这种图片没有什么法宝,需要仔细调整箭头的长度。您可以填写“ ”以延长箭头。
源代码:
@startuml
skinparam linetype ortho
(*) -down-> "clone repository"
note right
A:git clone url/to/repository
scp -p url/to/hooks/commit_msg repository/.git/hooks
end note
-down->[get an assignment] "coding"
-down-> "commit locally"
note right
B:git add xxx
git commit
end note
-down-> "review"
note right
C:git push origin refs/for/<branch>
end note
if "" then
-left->[ rejected] "rework"
-up-> "recommit"
'note left
'D:git add xxx
'git commit --amend
'end note
-right-> [ ]"review"
else
--right-->[ approved ] "submit"
note right: E:click "submit" on on corresponding gerrit page
-up-> "update local repository"
note right
F:git pull --rebase
end note
-left->[ get another task(a new cycle)] "coding"
@enduml