enter image description here

I am new to TikZ. I am trying to realize the photo using the TikZ package.

I know how to draw these individual figures using tikzpicture. However I am not sure how I can place them in order and use arrows to connect them. I found some similar examples using the graph library, but those examples only involve simple nodes which are circles. So I want to know if the package allows figures as nodes as in the photo. It would be better if I can specify the coordinates of each of the small figures.

Update: I am using the method suggested by the comments. Here is a part of my code:


    % 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$};
    % 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$};

    \draw [->] (H) -- (D);

The output picture is as follows: enter image description here

Here are the main problems:

  • The arrow seems too long. I wonder if I can add some code in the scope environment to make my bounding boxes larger.
  • I don't know how to add two parallel arrows of opposite directions with formulae on them. The formulae also need to be kept in the horizontal direction regardless of the direction of the arrow.
  • In addition, I want to put self-pointing arrows on these nodes.
  • Welcome to the TeX.SE. It is very beautiful the photo than to use TikZ. – Sebastiano Sep 23 '20 at 20:35
  • 1
    @Sebastiano Thank you. I have been reading many posts on this site when I was making my LaTeX notes on complex analysis. This is a photo that I want to place in my notes, so I wish I can learn to draw things like this using TikZ. – Peize Liu Sep 23 '20 at 20:44
  • :-) here we are for help you. Generally for the neibie users I suggest a simple tool to export your drawing in TikZ called mathcha.io/editor (or Geogebra). I prefer the first. It is necessary lot lot patience with this tool but it is possibile to obtain nice results. If you desire help I can help in main room in chat. All the best. – Sebastiano Sep 23 '20 at 20:51
  • 2
    Possibly you can stuff all the individual parts in one tikzpicture, wrapped in \begin{scope}[shift={(x,y)}, local bounding box=foo] <code for single part> \end{scope}, and with appropriate values for x and y. The local bounding box option will make a node named foo that fits around the content of the scope, and you can use that to draw the connections. – Torbjørn T. Sep 23 '20 at 21:10
  • 2
    Or make each subdiagram as a separate PDF with the standalone class, and use \node at (x,y) {\includegraphics{subdiagram1}};. – Torbjørn T. Sep 23 '20 at 21:11

This example is a good place to start with.

  1. If arrows are too long, you can either consider increasing the outer sep of a node, or use the shorten functionality, as it is introduced here.
  2. Parallel arrows can be drawn with a pair of arrows with different yshift.
  3. Self-pointing arrows can be drawn with \draw command and specifying in, out and looseness.

enter image description here

\usepackage{tikz, pgfplots}
\usepackage{amsmath, amssymb}

\usetikzlibrary{calc, patterns, positioning, arrows}



  node distance=0.1cm


\node (center) at (0, 0) {
    \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);
\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) {
      \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}$};
\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);



Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.