Frage zum Zeichnen einer Markow-Kette mit Tikz

Frage zum Zeichnen einer Markow-Kette mit Tikz

Ich bin mit dem Tikz-Paket nicht vertraut. Der folgende Code wurde aus vorhandenen Codes meines Kollegen geändert. Dies ist ein Markow-Kettendiagramm. Ich habe mein Bestes gegeben, aber die Biegepfeile beginnen in der Mitte der Zustände. Ich hätte sie gerne am Rand der Zustände beginnen lassen. Gibt es eine andere Möglichkeit, dies zu tun? Danke für Ihre Hilfe!

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{tikz}

\begin{document}

\begin{figure}
\begin{center}
\begin{tikzpicture}

%circle
\draw [thick] (-3.5,-1.6) circle [radius=0.6];
\draw [thick] (-0.9,-1.6) circle [radius=0.6];
\draw [thick] (1.7,-1.6) circle [radius=0.6];
\draw [thick] (6.8,-1.6) circle [radius=0.6];
\draw [thick] (9.4,-1.6) circle [radius=0.6];

%label state
\node (A) at (-3.5,-1.6) {1};
\node (B) at (-0.9,-1.6) {2};
\node (C) at (1.7,-1.6) {3};
\node (D) at (6.8,-1.6) {$m$};
\node (E) at (9.4,-1.6) {$m+1$};

%horizontal arrow
\draw [->, thick] (-2.9,-1.6) --(-1.5,-1.6);
\draw [->, thick] (-0.3,-1.6) --(1.1,-1.6);
\draw [->, thick] (2.3,-1.6) --(3.7,-1.6);
\draw [->, thick] (4.8,-1.6) --(6.2,-1.6);
\draw [->, thick] (7.4,-1.6) --(8.8,-1.6);


%dots
\draw [thick, dotted] (3.7,-1.6) -- (4.8,-1.6);



%parameters - horizontal arrow
\node [above] at (-2.2,-1.6) {{\footnotesize $x^{(m)}$}};
\node [above] at (0.4,-1.6) {{\footnotesize $D^{(m)}$}};
\node [above] at (3,-1.6) {{\footnotesize $D^{(m-1)}$}};
\node [above] at (5.5,-1.6) {{\footnotesize $D^{(3)}$}};
\node [above] at (8.1,-1.6) {{\footnotesize $D^{(2)}$}};

%vertical arrow
\draw [->, thick] (-3.5,1) --(-3.5,-1);

%bending arrow
\draw[->, thick] (A)  to [out=60,in=120, looseness=1]
(C);
\draw[->, thick] (A)  to [out=60,in=120, looseness=1]
(D);
\draw[->, thick] (A)  to [out=60,in=120, looseness=1]
(E);

\node [right] at (-3.5,0) {{\footnotesize $\displaystyle \pi_1$}};
\end{tikzpicture}
\end{center}
\end{figure}

\end{document}

Antwort1

Dies liegt daran, dass Sie die Kreise gezeichnet haben, die keine Knoten sind, also TikZ weiß nicht, dass es die Pfeile an ihren Rändern starten muss. Sie sollten Ihren Knoten besser eine Mindestgröße und eine Form (hier Kreis) geben und Ti sagenkZ, um sie zu zeichnen.

Markow-Kette

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{tikz}

\begin{document}

\begin{figure}
\begin{center}
\begin{tikzpicture}[mystate/.style={draw,circle,minimum size=1.2cm}]

%circle
%\draw [thick] (-3.5,-1.6) circle [radius=0.6];
%\draw [thick] (-0.9,-1.6) circle [radius=0.6];
%\draw [thick] (1.7,-1.6) circle [radius=0.6];
%\draw [thick] (6.8,-1.6) circle [radius=0.6];
%\draw [thick] (9.4,-1.6) circle [radius=0.6];

%label state
\node[mystate] (A) at (-3.5,-1.6) {1};
\node[mystate] (B) at (-0.9,-1.6) {2};
\node[mystate] (C) at (1.7,-1.6) {3};
\node[minimum size=1.2cm] (C')at (4.25,-1.6){};
\node[mystate] (D) at (6.8,-1.6) {$m$};
\node[mystate] (E) at (9.4,-1.6) {$m+1$};

%horizontal arrow
\draw [->, thick] (A) -- (B) node[midway, above] {\footnotesize $x^{(m)}$};
\draw [->, thick] (B) -- (C) node[midway, above] {\footnotesize $D^{(m)}$};
\draw [->, thick] (C) -- (C') node[midway, above] {\footnotesize $D^{(m-1)}$};
\draw [->, thick] (C') -- (D) node[midway, above] {\footnotesize $D^{(3)}$};
\draw [->, thick] (D) -- (E) node[midway, above] {\footnotesize $D^{(2)}$};


%dots
\draw [thick, dotted] (3.7,-1.6) -- (4.8,-1.6);



%vertical arrow
\draw [->, thick] (-3.5,1) --(-3.5,-1);

%bending arrow
\draw[->, thick] (A)  to [out=60,in=120, looseness=1]
(C);
\draw[->, thick] (A)  to [out=60,in=120, looseness=1]
(D);
\draw[->, thick] (A)  to [out=60,in=120, looseness=1]
(E);

\node [right] at (-3.5,0) {{\footnotesize $\displaystyle \pi_1$}};
\end{tikzpicture}
\end{center}
\end{figure}

\end{document}

Um ehrlich zu sein, ist dies nicht die beste Methode, um diese Art von Diagramm zu zeichnen. Sie sollten lernen, wie Sie hox verwenden chainsund zeichnen edges, vielleicht mithilfe der quotesBibliothek. Ich habe Ihren Code nicht zu sehr geändert, da Sie mit Ti nicht vertraut sind.kZ, aber Sie finden auf dieser Site viele großartige Beispiele für Markow-Ketten.

Antwort2

Hier ist ein Vorschlag für Sie.

Bildbeschreibung hier eingeben

\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{figure}
\begin{center}
\begin{tikzpicture}
\def\a{2.5} 
\path[nodes={circle,draw,minimum size=12mm}]
   (0,0) node (1) {$1$}
++(\a,0) node (2) {$2$}
++(\a,0) node (3) {$3$}
;
\draw[<-] (1)--+(90:2) node[midway,right]{$\pi_1$};
\draw[->] (1)--(2) node[midway,above]{$x^{(m)}$}; 
\draw[->] (2)--(3) node[midway,above]{$D^{(m)}$};
\draw[->] (1) to[out=60,in=120] (3);
\end{tikzpicture}
\end{center}
\end{figure}
\end{document}

verwandte Informationen