TikZ で次の有向グラフを描画するにはどうすればよいでしょうか?

TikZ で次の有向グラフを描画するにはどうすればよいでしょうか?

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

私はTikZ初心者です。TikZパッケージを使用して写真を実現しようとしています。

tikzpicture を使用してこれらの個々の図形を描く方法は知っています。ただし、それらをどのように順序付けて矢印を使用して接続するかはわかりません。グラフ ライブラリを使用した同様の例をいくつか見つけましたが、それらの例には円である単純なノードのみが含まれています。そのため、パッケージで写真のように図形をノードとして使用できるかどうかを知りたいです。小さな図形のそれぞれの座標を指定できればさらに良いでしょう。

更新: コメントで提案された方法を使用しています。以下は私のコードの一部です:

\begin{tikzpicture}[scale=0.6]
    \definecolor{shading}{gray}{0.8}

    % Unit Disk
    \begin{scope}[shift={(-12,1)},local bounding box=D]
        \filldraw[color=shading] (0,0) circle (2);
        \draw [line width=1pt] (0,0) circle (2);
        \draw [->] (-2.5, 0) -- (2.5,0);
        \draw [->] (0, -2.5) -- (0, 2.5);
        \node at (0,-3) {Unit Disk $\mathbb D$};
    \end{scope}
    
    % Upper Half Plane
    \begin{scope}[scale=1.1,local bounding box=H]
        \filldraw[color=shading] (-2.5,0) rectangle (2.5,2.5);
        \draw [line width=1pt] (-2.5, 0) -- (2.5,0);
        \draw [->] (-2.5, 0) -- (2.5,0);
        \draw [->] (0, -1) -- (0, 2.5);
        \node at (0,-1.5) {Upper Half Plane $\mathbb H$};
    \end{scope}

    \draw [->] (H) -- (D);
\end{tikzpicture}

出力画像は次のようになります。 ここに画像の説明を入力してください

主な問題は次のとおりです。

  • 矢印が長すぎるようです。スコープ環境にコードを追加して、境界ボックスを大きくできるかどうか疑問です。
  • 反対方向の 2 つの平行矢印とその上に数式を追加する方法がわかりません。また、矢印の方向に関係なく、数式は水平方向に維持する必要があります。
  • さらに、これらのノードに自己指し示す矢印を配置したいと思います。

答え1

この例は出発点として適しています。

  1. outer sep矢印が長すぎる場合は、ノードを増やすか、shorten導入されている機能を使用するかを検討してください。ここ
  2. 異なる 2 つの矢印を使用して、平行矢印を描くことができますyshift
  3. 自己指向矢印は、 コマンドと を使用して、\draw、および を指定して描画できますinoutlooseness

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

\documentclass{standalone}
\usepackage[T1]{fontenc}
\usepackage{tikz, pgfplots}
\usepackage{amsmath, amssymb}

\usetikzlibrary{calc, patterns, positioning, arrows}

\begin{document}


\begingroup
\fontsize{9}{11}\selectfont

\tikzset{
  node distance=0.1cm
}

\begin{tikzpicture}

\node (center) at (0, 0) {
  \begin{tikzpicture}[scale=1.2]
    \draw[-latex] (-1, 0)--(1, 0);
    \draw[-latex] (0, -0.2)--(0, 1);
    \draw[pattern=north west lines, pattern color=black] (-0.9, 0) rectangle (0.9, 0.8);
  \end{tikzpicture}
};
\node[below=of center] (center text) {Upper Half Plane $\mathbb{H}$};
\node (center loop) at ($(center text)+(1.3, -0.3)$) {};
\draw[-latex] (center loop) to [in=-30, out=-150, looseness=30] node[yshift=-5mm] {\tiny $\displaystyle\operatorname{Aut}(\mathbb{H})=
\left\{ f(z)=\frac{az+b}{cz+d},\ldots \right\}$} (center loop);

\node (graph1) at (-5, 1.5) {
  \begin{tikzpicture}[scale=1.2]
      \draw[-latex] (-1, 0)--(1, 0);
      \draw[-latex] (0, -0.2)--(0, 1);
      \draw[pattern=north west lines, pattern color=black] (-0.5, 0) rectangle (0.5, 0.8);
      \node at (-0.5, -0.15) {\tiny $-\frac{\pi}{2}$};
      \node at (0.5, -0.15) {\tiny $\frac{\pi}{2}$};
    \end{tikzpicture}
};
\draw[->] (center.north west) to node[midway, above, xshift=6mm] {\tiny $f(z)=\operatorname{arcsin}(z)$} (graph1.east);
\draw[->] ([yshift=-1mm]graph1.east) to node[midway, below, xshift=-6mm] {\tiny $f(z)=\sin(z)$} ([yshift=-1mm]center.north west);

\end{tikzpicture}



\endgroup
\end{document}

関連情報