나는 다음과 같은 텍스 코드를 가지고 있습니다
\documentclass{minimal}
\usepackage{tikz}
\usetikzlibrary{arrows,positioning}
\tikzset{
%Define standard arrow tip
>=stealth',
%Define style for boxes
punkt/.style={
rectangle,
rounded corners,
draw=black, very thick,
text width=6.5em,
minimum height=2em,
text centered},
% Define arrow style
pil/.style={
->,
thick,
shorten <=2pt,
shorten >=2pt,}
}
\begin{document}
\begin{tikzpicture}[node distance=1cm, auto,]
%nodes
\node[punkt] (agent) {Agent};
\node[below=of agent] (dummy) {};
\node[left=2.0 of dummy] (state) {$X_t$}
edge[pil, bend left=45] (agent.west);
\node[left=3.0 of dummy] (reward) {$R_t$}
edge[pil, bend left=45] (agent.west);
\node[punkt, inner sep=5pt,below=1.0cm of dummy]
(environment) {Environment};
\draw (environment.west) edge[pil, bend left=45] (state.south)
edge[pil, bend left=45] (reward.south);
% We make a dummy figure to make everything look nice.
\node[right=2.0cm of dummy] (action) {$A_t$}
edge[pil,bend right=45] (agent.east)
edge[pil, bend left=45] (environment.east); % .east since we want
% consistent
\end{tikzpicture}
\end{document}
나는 원한다
- 에이전트를 작업에 연결하기 위해
- 환경 노드의 왼쪽 중앙에서 가장자리를 시작합니다(@marsupilam 덕분에 이미 수정되었습니다).
답변1
단계는 다음과 같습니다.
- 필요한 노드 정의
- 그들 사이에 가장자리를 그립니다.
다소 논리적으로 들리지 않습니까?
출력
코드
\documentclass[tikz]{standalone}
\usetikzlibrary{calc,positioning,arrows}
\begin{document}
\tikzset
{
punkt/.style =
{
circle,
draw,
},
pil/.style =
{
red,
-stealth',
bend left=45,
},
}
\begin{tikzpicture}[node distance=1cm, auto,]
%nodes
\node[punkt] (agent) {Agent};
\node[below=of agent] (dummy) {};
\node[left=2.0 of dummy] (state) {$X_t$} ;
\node[left=3.0 of dummy] (reward) {$R_t$} ;
\node[punkt, inner sep=5pt,below=1.0cm of dummy] (environment) {Environment};
\node[right=2.0cm of dummy] (action) {$A_t$} ;
% edges
\path[every edge/.append style={pil}]
(environment.west) edge (state.south)
edge (reward.south)
(agent.east) edge (action)
(action) edge (environment.east)
(state) edge (agent.west)
(reward) edge (agent.west);
\end{tikzpicture}
\end{document}
답변2
주어진 MWE와마르수필람대답하지만 다음과 같이 변경됩니다.
- 노드 위치 지정에 대한 다른 접근 방식, 사전 정의된 노드 거리만 사용됨
- 가장자리는 사용되며
arrow.meta
라이브러리bending
와 그 스타일은 개인적으로 약간의 손길을 주었습니다(귀하의 의견에 따라 쉽게 변경할 수 있음). - 가장자리 그리기를 위한 단순화된 코드
이러한 변경으로 인해 MWE가 약간 더 간결해졌습니다.
\documentclass[tikz, margin=3mm]{standalone}
\usetikzlibrary{arrows.meta, bending, positioning}
\begin{document}
\begin{tikzpicture}[
every node/.append style = {inner sep=1.5pt},
node distance = 12mm and 9mm,
punkt/.style = {circle, draw, very thick},
pil/.style = {line width=1mm, red, -{Stealth[length=4mm,bend]},
shorten >=1pt, shorten <=2pt, bend left=#1},
pil/.default = 30
]
%nodes
\node (reward) {$R_t$} ;
\node (state) [right=of reward] {$X_t$} ;
\node (env) [punkt,
below right=of state] {Environment};
\node (action) [above right=of env] {$A_t$} ;
%
\node (agent) [punkt,
above=of state.north -| env] {Agent};
% edges
\draw[pil] (agent) edge (action)
(action) edge (env)
(env) edge (state)
(env) edge[pil=40] (reward)
(state) edge (agent)
(reward) edge[pil=40] (agent);
\end{tikzpicture}
\end{document}