Seite 1 von 1

Graphik in Tikz mit Nummerierten Ebenen

Verfasst: Mi 3. Dez 2025, 06:56
von Baluu
Guten Morgen

Ich bin gerade am Abschluss meiner Dissertation und schaue das alles was ich über die Jahre so "gebastelt" habe auch eine Art dargestellt ist, wo es dann im Verlag beliebig vergrössert/verkleinert usw. werden kann. Ich denke es macht daher am meisten sinn alles relativ zu machen und nicht mit absoluten angaben.
\documentclass[tikz,border=10pt]{standalone}   % 1. Klasse „standalone“ mit TikZ‑Option
\usepackage{tikz}                               % 2. Paket einbinden
\usetikzlibrary{positioning}                    % 3. Bibliothek für relative Platzierung

\begin{document}

		\begin{tikzpicture}[
			node distance=4em and 4em,
			mynode/.style={rectangle, draw, text width=6em, text centered, minimum height=4em},
			myarrow/.style={->, >=latex', shorten >=1pt}
			]
			
			\node[mynode] (attitude1) {Attitude};
			\node[mynode, below=of attitude1] (competencies2) {Competencies};
			\node[mynode, right=of competencies2] (resources1) {Resources};
			\node[mynode, right=of resources1] (attitude2) {Attitude};
			\node[mynode, above=of attitude2] (competencies1) {Competencies};
			\node[mynode, below=of resources1] (decision1) {Decision};
			\node[below= of competencies2 ] (decisionPhantom) {};
			
			\node[left= of attitude1] (level1) {1.)};
			\node[left= of competencies2] (level2) {2.)};
			\node[left = of decisionPhantom] (level3) {3.)};
			
			\draw[myarrow] (competencies2) -- node[above, sloped, midway] {gain} (attitude1);
			\draw[myarrow] (attitude2) -- node[above, sloped, midway] {gain} (competencies1);
			\draw[myarrow] (competencies2) -- node[above, sloped] {conduct} (decision1);
			\draw[myarrow] (resources1) -- node[above, sloped] {conduct} (decision1);
			\draw[myarrow] (attitude2) -- node[above, sloped] {conduct} (decision1);
			\draw[myarrow] (competencies2) -- node[above, sloped, near start] {gain} (competencies1);
			\draw[myarrow] (attitude2) -- node[above, sloped, near start] {gain} (attitude1);
			
			
		\end{tikzpicture}

\end{document}
Wie ihr seht ist Level 3 nun nicht unterhalb von Level 2 und 1. Das wird so sein weil den Node wo ich es positioniere kein rectangel mehr ist.

Ich hatte eine Lösung wo ich mit yshift usw. gearbeitet habe. Aber das führt dazu das sich die ganze Graphik dann verschiebt und sieht scheisse aus.

Re: Graphik in Tikz mit Nummerierten Ebenen

Verfasst: Mi 3. Dez 2025, 07:07
von Baluu
sorry ich habe vergessen, dass ich es als Gast den Beitrag nicht mehr editieren kann.

Das Minimalbeispiel ist nicht lauffähig

Das hier sollte gehen:

%-------------------------------------------------
%   Vollständiges Minimalbeispiel (standalone)
%-------------------------------------------------
\documentclass[tikz,border=10pt]{standalone}   % 1. Klasse „standalone“ mit TikZ‑Option
\usepackage{tikz}                               % 2. Paket einbinden
\usetikzlibrary{positioning, arrows.meta}      % 3. Bibliotheken für relative Platzierung & Pfeilköpfe

\begin{document}
	
	\begin{tikzpicture}[
		node distance=4em and 4em,                         % Abstand zwischen Knoten
		mynode/.style={                                   % Stil für alle Kästchen
			rectangle,
			draw,
			text width=6em,
			align=center,
			minimum height=4em
		},
		myarrow/.style={                                  % Stil für die Pfeile
			->,
			>=latex,                                      % korrekter Pfeilkopf
			shorten > =1pt
		}
		]
		
		%--- Knoten ----------------------------------------------------
		\node[mynode] (attitude1)       {Attitude};
		\node[mynode, below=of attitude1] (competencies2) {Competencies};
		\node[mynode, right=of competencies2] (resources1)   {Resources};
		\node[mynode, right=of resources1] (attitude2)      {Attitude};
		\node[mynode, above=of attitude2] (competencies1)   {Competencies};
		\node[mynode, below=of resources1] (decision1)      {Decision};
		
		% Phantom‑Knoten, damit die linke Beschriftung von Ebene 3 richtig sitzt
		\node[below=of competencies2] (decisionPhantom) {};
		
		%--- Ebenen‑Beschriftungen ---------------------------------------
		\node[left=of attitude1]       (level1) {1.)};
		\node[left=of competencies2]  (level2) {2.)};
		\node[left=of decisionPhantom] (level3) {3.)};
		
		%--- Verbindungen -----------------------------------------------
		\draw[myarrow] (competencies2) -- node[above, sloped, midway] {gain} (attitude1);
		\draw[myarrow] (attitude2)     -- node[above, sloped, midway] {gain} (competencies1);
		\draw[myarrow] (competencies2) -- node[above, sloped]          {conduct} (decision1);
		\draw[myarrow] (resources1)    -- node[above, sloped]          {conduct} (decision1);
		\draw[myarrow] (attitude2)     -- node[above, sloped]          {conduct} (decision1);
		\draw[myarrow] (competencies2) -- node[above, sloped, near start] {gain} (competencies1);
		\draw[myarrow] (attitude2)     -- node[above, sloped, near start] {gain} (attitude1);
		
	\end{tikzpicture}
	
\end{document}
Ich habe ausprobiert ob ein Lumo mir das Minimalbeispiel zügiger machen kann anstatt das ich alle Pakte händisch raussuche welche hier relevant sind. Brauchte zwei Anläufe.

Re: Graphik in Tikz mit Nummerierten Ebenen

Verfasst: Mi 3. Dez 2025, 08:25
von Bartman
Der Knoten decisionPhantom bleibt ein Rechteck, da es der Voreinstellung entspricht und nicht geändert wurde. Du könntest, wie von mir auskommentiert gezeigt, den Stil mynode auf den Hilfsknoten anwenden und den Rand nicht mehr zeichnen lassen.

Stattdessen empfehle ich Dir, den Schnittpunkt für die Position des Knoten level3 mithilfe der von TikZ erlaubten Angaben zu berechnen. Es gibt dafür in der Dokumentation reichlich Beispiele.
%-------------------------------------------------
%   Vollständiges Minimalbeispiel (standalone)
%-------------------------------------------------
\documentclass[tikz,border=10pt]{standalone}   % 1. Klasse „standalone“ mit TikZ‑Option
%\usepackage{tikz}                               % 2. Paket einbinden
\usetikzlibrary{positioning, arrows.meta}      % 3. Bibliotheken für relative Platzierung & Pfeilköpfe

\begin{document}
	
	\begin{tikzpicture}[
		node distance=4em,                         % Abstand zwischen Knoten
		mynode/.style={                                   % Stil für alle Kästchen
%			rectangle,
			draw,
			text width=6em,
			align=center,
			minimum height=4em
		},
		myarrow/.style={                                  % Stil für die Pfeile
			->,
			>=latex,                                      % korrekter Pfeilkopf
			shorten > =1pt
		}
		]
		
		%--- Knoten ----------------------------------------------------
		\node[mynode] (attitude1)       {Attitude};
		\node[mynode, below=of attitude1] (competencies2) {Competencies};
		\node[mynode, right=of competencies2] (resources1)   {Resources};
		\node[mynode, right=of resources1] (attitude2)      {Attitude};
		\node[mynode, above=of attitude2] (competencies1)   {Competencies};
		\node[mynode, below=of resources1] (decision1)      {Decision};
		
		% Phantom‑Knoten, damit die linke Beschriftung von Ebene 3 richtig sitzt
%		\node[mynode, below=of competencies2, draw=none] (decisionPhantom) {};
		
		%--- Ebenen‑Beschriftungen ---------------------------------------
		\node[left=of attitude1]      (level1) {1.)};
		\node[left=of competencies2]  (level2) {2.)};
		\node at (level2|-decision1)  (level3) {3.)};
%        \node[left=of decisionPhantom]  (level3) {3.)};
		
		%--- Verbindungen -----------------------------------------------
		\draw[myarrow] (competencies2) -- node[above, sloped] {gain}   (attitude1);
		\draw[myarrow] (attitude2)     -- node[above, sloped] {gain}   (competencies1);
		\draw[myarrow] (competencies2) -- node[above, sloped]          {conduct} (decision1);
		\draw[myarrow] (resources1)    -- node[above, sloped]          {conduct} (decision1);
		\draw[myarrow] (attitude2)     -- node[above, sloped]          {conduct} (decision1);
		\draw[myarrow] (competencies2) -- node[above, sloped, near start] {gain} (competencies1);
		\draw[myarrow] (attitude2)     -- node[above, sloped, near start] {gain} (attitude1);
		
%		\draw[red] (level2) |- (decision1);% zur Veranschaulichung
	\end{tikzpicture}
	
\end{document}

Re: Graphik in Tikz mit Nummerierten Ebenen

Verfasst: Mi 3. Dez 2025, 11:29
von Baluu
Danke für den Vorschlag.

Ich bin mir nicht ganz sicher ob ich verstanden habe, was du mit

"Stattdessen empfehle ich Dir, den Schnittpunkt für die Position des Knoten level3 mithilfe der von TikZ erlaubten Angaben zu berechnen. Es gibt dafür in der Dokumentation reichlich Beispiele."

Meinst aber ich habe eine vage Erinnerung das ich schon mal so etwas gemacht habe mit "Schnittpunkte" glaube von dort her komme ich weiter.

Aber ich bin ohnehin nicht mit den "Level" so zufrieden. Es verschiebt die Graphik aus dem Mittelpunkt der Seite.

Evtl. kann ich die Level eleganter anzeigen als sie zu nummerieren.

Danke dir auf alle Fälle.