그래프 알고리즘이 작동하는 방식을 보여주기 위해 Beamer에 대한 슬라이드 몇 개를 만들고 싶습니다.
나에게 필요한 것은 처음에 그래프를 가질 수 있는 것입니다. 노드 외부에 노드에 대한 추가 레이블을 가질 수 있고 가장자리에 가중치를 부여하고 가장자리의 색상을 변경할 수 있습니다. 그래프에 포함할 기능에 대한 예를 들어 아래 그림을 첨부했지만 몇 가지 조사를 한 후에도 해당 항목을 모두 포함할 수 있는 방법을 찾지 못했습니다.
모든 단계에서 그래프를 약간 변경하고 싶습니다. 하나의 노드를 검정색으로 표시하고, 가장자리의 색상을 변경하고, 노드 외부 레이블을 변경하려면 한 가지 해결책은 코드를 다른 프레임에 복사하는 것입니다. 더 쉽고 더 적은 프레임에서 프로그래밍할 수 있도록 프로그래밍할 수 있나요?
답변1
label
상태 외부의 텍스트와 가장자리에 레이블을 지정하는 노드에 사용할 수 있습니다 .
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning,arrows.meta}
\tikzset{%
node distance=2cm,
State/.style={%
draw,circle,
thick,
color=black!60!green,
inner sep=0pt,
minimum size=10mm,
fill=blue!40!green,
text=white,
},
StateMark/.style={%
State,
fill=black},
Edge/.style={%
color=blue!40!green,
very thick,
-{Triangle[scale=1.1]},%% Try Latex instead oc Triangle
text=black,
},
EdgeMark/.style={%
Edge,
color=blue!90!green,
text=black,
}
}
\begin{document}
\begin{tikzpicture}
\node[StateMark,label=90:r] (S1) {$\infty$};
\node[StateMark,label=90:s,right=of S1] (S2){0};
\node[State,label=90:t,right=of S2] (S3){2};
\node[State,label=90:x,right=of S3] (S4){6};
%%
\draw[Edge] (S1) -- node[above,pos=0.5]{5} (S2);
\draw[Edge] (S1) to[bend right] node[below,pos=0.5]{5} (S3);%% Default bend = 30 degrees
\draw[EdgeMark] (S2) -- node[above,pos=0.5]{2} (S3);
\draw[EdgeMark] (S2) to[bend left=40] node[above,pos=0.5]{5} (S4);
\draw[Edge] (S3) -- node[above,pos=0.5]{7} (S4);
\end{tikzpicture}
\end{document}
State
코드를 단순화하기 위해 정의를 다음과 같이 변경하여 레이블 텍스트를 입력으로 제공할 수 있습니다 .
State/.style={%
draw,circle,
thick,
color=black!60!green,
inner sep=0pt,
minimum size=10mm,
fill=blue!40!green,
text=white,
label=90:#1,
},
StateMark/.style={%
State=#1,
fill=black},
그런 다음 상태를 다음과 같이 그립니다.
\node[StateMark=r] (S1) {$\infty$};
\node[StateMark=s,right=of S1] (S2){0};
\node[State=t,right=of S2] (S3){2};
\node[State=x,right=of S3] (S4){6};