グラフに自己ループと平行エッジを描く方法(Beamer で作業)

グラフに自己ループと平行エッジを描く方法(Beamer で作業)

私の質問は

グラフに自己ループと平行エッジを描くにはどうすればいいですか? 私はBeamerで作業しています

頂点 V_1 での自己ループ

V_2とV_3の間の平行エッジ

小さな疑問が一つあります。図を中央に配置するにはどうしたらいいでしょうか?

ムウェ

\documentclass[12pt,fleqn]{beamer}
\usetheme{AnnArbor}
\usepackage{setspace}
\usepackage{amsmath}
\usepackage[utf8]{inputenc}
\usepackage{pgf,tikz,pgfplots}
\pgfplotsset{compat=1.15}
\usepackage{mathrsfs}
\usetikzlibrary{arrows}
\usetikzlibrary{decorations.markings}
\usecolortheme{beaver}
\usefonttheme{professionalfonts} % using non standard fonts for beamer
\usefonttheme{serif} % default family is serif
\addtobeamertemplate{frametitle}{}{\vspace{-0.4em}} % decrease
\begin{document}
\begin{frame}[t]
\begin{tikzpicture}
    \draw[line width=0.5pt] (0.0,3.0) -- (3.0,3.0);
    \draw[line width=0.5pt] (3.0,3.0) -- (3.0,0.0);
    \draw[line width=0.5pt] (3.0,0.0) -- (0.0,0.0);
    \draw[line width=0.5pt] (0.0,0.0) -- (0.0,3.0);
    \draw [fill=black] (0,3) circle (1.5pt);
    \draw[color=black,above] (0.0,3.10) node {$v_1$};
    \draw [fill=black] (3,3) circle (1.5pt);
    \draw[color=black,above] (3.0,3.10) node {$v_2$};
    \draw [fill=black] (3,0) circle (1.5pt);
    \draw[color=black,below] (3.0,-0.10) node {$v_3$};
    \draw [fill=black] (0,0) circle (1.5pt);
    \draw[color=black,below] (0.0,-0.10) node {$v_4$};
    \end{tikzpicture}
\end{frame}
\end{document}

答え1

ここに画像の説明を入力してください

ライブラリの使用によりautomata(@js bibra の回答と同様: +1)、arrows.meta矢印については、平行矢印の代わりに曲がった矢印が使用され、プリアンブルから、beamer( xcoloramsmath) によってロードされるパッケージが削除され、プレゼンテーションでは意味をなさない ( setspace) か、最近の LaTeX のデフォルト機能である ( [utf]{inputenc}) ようになります。

\documentclass[12pt,fleqn]{beamer}
\usetheme{AnnArbor}
\usecolortheme{beaver}
\usefonttheme{professionalfonts} % using non standard fonts for beamer
\usefonttheme{serif} % default family is serif
\addtobeamertemplate{frametitle}{}{\vspace{-0.4em}} % decrease
%\usepackage{setspace}
%\usepackage{amsmath}
%\usepackage[utf8]{inputenc}
\usepackage{pgfplots}   % it load tikz and pgf too
\pgfplotsset{compat=1.17}

\usepackage{mathrsfs}
\usetikzlibrary{arrows.meta, automata,
                positioning,
                shadows}
\begin{document}
\begin{frame}
\begin{center}
    \begin{tikzpicture}[
      node distance = 22mm and 22mm,
state/.append style = {circle, draw=orange, fill=orange, 
                       minimum size=1.2em},
every edge/.style = {draw, -Stealth, semithick}
                        ] 
    \begin{scope}[nodes=state]
\node (n1)  {$v_1$};
\node (n2)  [right=of n1]   {$v_2$};
\node (n3)  [below=of n2]   {$v_3$};
\node (n4)  [left =of n3]   {$v_4$};
    \end{scope}
\path   (n3) edge  (n4)
        (n4) edge  (n1)
        (n1) edge [loop above,looseness=15]  (n1)
        (n1) edge  (n2)
        (n2) edge [bend left=15] (n3)
        (n3) edge [bend left=15] (n2)
        ;
    \end{tikzpicture}
\end{center}
\end{frame}
\end{document}

答え2

次の行を追加します

\path
(v1) edge [->,loop above] node {} (v1);

\endtikzpictureの直前

ここに画像の説明を入力してください

編集 - 興味を引く可能性があり、編集/変更できる代替ソリューション

ここに画像の説明を入力してください

\documentclass[12pt,fleqn]{beamer} 
\usetheme{AnnArbor} 
\usepackage{setspace} 
\usepackage{amsmath} 
\usepackage[utf8]{inputenc} 
\usepackage{pgf,tikz,pgfplots} 
\pgfplotsset{compat=1.15} 
\usepackage{mathrsfs} 
%\usetikzlibrary{arrows} 
%\usetikzlibrary{decorations.markings, shapes,positioning,arrows.meta,bending,automata} 
\usetikzlibrary {arrows.meta,automata,positioning,shadows,calc}
\usecolortheme{beaver} 
\usefonttheme{professionalfonts} % using non standard fonts for beamer 
\usefonttheme{serif} % default family is serif 
\addtobeamertemplate{frametitle}{}{\vspace{-0.4em}} % decrease 
\newcommand\DoubleLine[7][4pt]{%
    \path(#2)--(#3)coordinate[at start](h1)coordinate[at end](h2);
    \draw[#4]($(h1)!#1!90:(h2)$)-- node [auto=left] {#5} ($(h2)!#1!-90:(h1)$); 
    \draw[#6]($(h1)!#1!-90:(h2)$)-- node [auto=right] {#7} ($(h2)!#1!90:(h1)$);
}
\begin{document} 
    \begin{frame}[t] 
        \begin{center}
        \begin{tikzpicture}[
            ->,
            >={Stealth[round]},
            shorten >=1pt,
            auto,
            node distance=2.8cm,
            on grid,
            semithick,
        every state/.style={
            fill=red,
            draw=none,
            circular drop shadow,
            text=white
        }
    ]
        \node[state] (A)              {$v_1$};
        \node[state] (B) [right=of A] {$v_2$};
        \node[state] (D) [below=of A] {$v_4$};
        \node[state] (C) [below=of B] {$v_3$};
        
        \path (A) edge  (B) 
        (C)edge(D)
        (D)edge(A)
        (A) edge [loop above]  (A)
        ;
        
        \DoubleLine{B}{C}{<-,very thick,black}{}{->,very thick,red}{}
        \end{tikzpicture}
    \end{center}
    \end{frame} 
\end{document}

二重矢印の定義はここから取られます--

グラフの平行辺にラベルを付ける

関連情報