Tikz: Centrado horizontal del grupo de nodos
Pregunta
Necesito alinear cada fila del gráfico al centro. Estoy tratando de hacerlo con xshift. Aquí el código:
\begin{tikzpicture}[node distance=1.5cm, auto, text centered]
\tikzstyle{every node}=[draw,ball];
\begin{scope}[xshift=1.5cm]
\node (A) {A};
\node [right of=A] (B) {B};
\node [right of=B] (C) {C};
\node [right of=C] (D) {D};
\end{scope}
\begin{scope}[yshift=-1.5cm]
\node (AB) {AB};
\node [right of=AB] (AC) {AC};
\node [right of=AC] (AD) {AD};
\node [right of=AD] (BC) {BC};
\node [right of=BC] (BD) {BD};
\node [right of=BD] (CD) {CD};
\end{scope}
\begin{scope}[yshift=-3cm,node distance=2cm,xshift=1cm]
\node (ABC) {ABC};
\node [right of=ABC] (ABD) {ABD};
\node [right of=ABD] (ACD) {ACD};
\node [right of=ACD] (BCD) {BCD};
\end{scope}
\begin{scope}[xshift=4cm, yshift=-4.5cm, node distance=2cm]
\node (ABCD) {ABCD};
\end{scope}
\end{tikzpicture}
¿Hay alguna otra forma de hacerlo? No me gusta cambiar los valores de xshift cada vez.
Solución
Puede hacer de cada fila su propia matriz, lo que le permite agrupar efectivamente un conjunto de nodos en uno.
Tu ejemplo
\begin{tikzpicture}[auto]
\begin{scope}[]
\matrix[nodes={draw,ball}, column sep=1cm]{
\node (A) {A}; &
\node (B) {B}; &
\node (C) {C}; &
\node (D) {D}; \\
};
\end{scope}
\begin{scope}[yshift=-1.5cm]
\matrix[nodes={draw,ball}, column sep=1cm]{
\node (AB) {AB}; &
\node (AC) {AC}; &
\node (AD) {AD}; &
\node (BC) {BC}; &
\node (BD) {BD}; &
\node (CD) {CD}; \\
};
\end{scope}
\begin{scope}[yshift=-3cm]
\matrix[nodes={draw,ball}, column sep=1cm]{
\node (ABC) {ABC}; &
\node (ABD) {ABD}; &
\node (ACD) {ACD}; &
\node (BCD) {BCD}; \\
};
\end{scope}
\begin{scope}[yshift=-4.5cm]
\matrix[nodes={draw,ball}, column sep=1cm]{
\node (ABCD) {ABCD}; \\
};
\end{scope}
\end{tikzpicture}
Nota: asegúrate de \usetikzlibrary{matrix}
Resultar en
(Inventé el mío ball
estilo.)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow