Bagaimana cara memposisikan node yang berpusat di atas dua node lainnya?

Aug 20 2020

Saya memiliki dua node dan ingin menempatkan node ketiga di tengah di atasnya. Pada contoh di bawah ini, posisi vertikal node Z adalah baik. Namun, saya ingin memindahkan node Z lebih jauh ke kanan untuk dipusatkan relatif terhadap dua node di bagian bawah. Apakah ada perintah interpolasi yang mirip dengan above=of x!0.5!yatau cara sederhana lain untuk melakukan ini?

Contoh:

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning,arrows.meta,fit,calc,backgrounds,shapes.geometric}
\begin{document}
\begin{tikzpicture}
\node[circle, draw=black] (x) {$x$};
\node[circle, draw=black, right=of x] (y) {$y$};
\node[circle, draw=black, above=of x] (z) {$z$};
\path (x) edge[->, sloped, anchor=south] node {left} (z);
\path (z) edge[->, sloped, anchor=south] node {right} (y);
\path (x) edge[->, sloped, anchor=north] node {bottom} (y);
\end{tikzpicture}
\end{document}

Keluaran:

Saya mengetahui pertanyaan terkait simpul pusat tikz di bawah 2 simpul lain tetapi jawabannya tampaknya menyarankan right above=xyang tidak benar-benar memusatkan simpul antara X dan Y.

Jawaban

4 Zarko Aug 20 2020 at 01:26

Seperti ini:

\documentclass[tikz, margin=3mm]{standalone}
\usetikzlibrary{arrows.meta,
                calc,
                positioning,
                quotes}

\begin{document}
    \begin{tikzpicture}[
node distance = 13mm,
     C/.style = {%C: as circle
                 circle, draw, minimum size=1.5em, inner sep=2pt},
every edge/.style = {draw, -Straight Barb},
every edge quotes/.style = {auto, font=\footnotesize, inner sep=1pt, sloped}
                        ]
\node[C] (x) {$x$};
\node[C, right=of x] (y) {$y$};
\node[C, above=of $(x.north)!0.5!(y.north)$] (z) {$z$};
\path   (x) edge["left"]    (z)
        (z) edge["right"]   (y)
        (x) edge["bottom"]  (y);
    \end{tikzpicture}
\end{document}
1 AndréC Aug 20 2020 at 01:40

Cara lain dengan on gridopsi.

\documentclass[border=5mm,tikz]{standalone}

\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}
\begin{scope}[on grid,node distance=2cm]
\draw[help lines](-1,-1) grid(3,3);%<-- comment this line to hide the grid
\node[circle, draw=black] (x) {$x$};
\node[circle, draw=black, right=of x] (y) {$y$};
\node[circle, draw=black, above right=2cm and 1cm of x] (z) {$z$};
\end{scope}

\path (x) edge[->, sloped, anchor=south] node {left} (z);
\path (z) edge[->, sloped, anchor=south] node {right} (y);
\path (x) edge[->, sloped, anchor=north] node {bottom} (y);

\end{tikzpicture}
\end{document}