вопрос о рисовании цепи Маркова с использованием Tikz

вопрос о рисовании цепи Маркова с использованием Tikz

Я не знаком с пакетом Tikz, следующий код является измененным из существующих кодов моего коллеги. Это график цепи Маркова. Я сделал все возможное, но изгибающие стрелки начинаются в центре состояний, я бы хотел, чтобы они начинались на краю состояний. Есть ли другой способ сделать это? Спасибо за помощь!

\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}

решение1

Это потому, что вы нарисовали круги, которые не являются узлами, поэтому TiкZ не знает, что должен начинать стрелки на своих границах. Вам лучше задать вашим узлам минимальный размер и форму (круг, здесь) и сказать TiкZ, чтобы нарисовать их.

цепь Маркова

\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}

Теперь, честно говоря, это не лучший способ рисовать такой график. Вам следует научиться использовать hox chainsи рисовать edges, возможно, используя quotesбиблиотеку. Я не слишком модифицировал ваш код, так как вы не знакомы с TiкZ, но на этом сайте вы найдете множество замечательных примеров цепей Маркова.

решение2

Вот вам предложение.

введите описание изображения здесь

\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}

Связанный контент