Werte an Verbindungen in Baumdarstellung

Tabellen und Grafiken erstellen und anordnen


DEVV
Forum-Century
Forum-Century
Beiträge: 117
Registriert: Sa 31. Okt 2015, 17:06

Werte an Verbindungen in Baumdarstellung

Beitrag von DEVV »

Hallo Leute,

ich habe aktuell eine Baumdarstellung, an der ich gerne Werte an die Verbindungen schreiben würde:
\documentclass[12pt,twoside,a4paper]{article}
\usepackage{tikz}
\usepackage{graphicx}
\begin{document}
\begin{figure}
		\begin{center}
			\scalebox{0.58}{
				\begin{tikzpicture}[sibling distance=8em]
    			\tikzset{node1/.style={rectangle,rounded corners,draw=black, align=center, top color=white, bottom color=gray!20}} 
    			
    			\node[node1](ub) {9. output}[grow'=up]
  child { node[node1] {4. str\_receiver} } ; 
  		\node[node1][above=2em](ob) at (ub-1.north)  {7. sender}[grow'=up]
    		child { node[node1] {5. bin\_str\_join} 
    			child{node[node1]{3. bin\_str\_join}
    				child{node[node1]{2. rel\_source}
    					child{node{\includegraphics[width=4em]{puffer.png}}} }
    				child{node[node1]{0. str\_source}
    					child{node{\includegraphics[width=4em]{puffer.png}}} }}
    		child{
    			child[missing]
    			child{node[node1]{1. rel\_source}
    				child{node{\includegraphics[width=4em]{puffer.png}}}}}};
  				
    		\path[<->,very thick,shorten <=.5ex,shorten >=.5ex](ub-1) edge node[pos=.5,right]{\includegraphics[width=3.5em]{Zeichnung.png}}(ob);

\path([xshift=2.75cm]ob-1-2.east)--++(1em,0)coordinate(h);
\draw[|-|,very thick]
(ob.south-|h)
-- node[xshift=.5cm][right]{Kernel}
(ob-1-1-1-1.north-|h)
;
\draw[|-|,very thick]
(ub-1.north-|h)
-- node[xshift=.5cm][right]{User}
(ub.south-|h)
; 
    		\end{tikzpicture}}
    	\end{center}
    	\caption{Anfrageplan der \textbf{Netsimple-Anfrage}.}
	\end{figure}
\end{document}
Es sollen Werte wie z.B. 2171,938 ∗ 10^4 an die Kanten geschrieben werden.

Bartman
Forum-Meister
Forum-Meister
Beiträge: 2456
Registriert: Do 16. Jul 2009, 21:41
Wohnort: Hessische Provinz

Beitrag von Bartman »

Denke bitte an die nötigen Vorkehrungen für die Pfade Deiner Grafikdateien.

Wie zentriere ich eine Abbildung oder Tabelle richtig?

Die Anwendung der \texttt-Befehle auf einen Teil der Knotenbeschriftungen finde ich passend. Es ist aber letztlich Deine Entscheidung.

Mir fällt zu Deinem Anliegen so etwas ein:
\documentclass[tikz, border=5pt]{standalone}
\usepackage[locale=DE]{siunitx}

\begin{document}
\begin{tikzpicture}[
	sibling distance=8em,
	node1/.style={
		rectangle,
		rounded corners,
		draw,
		align=center, 
		top color=white, 
		bottom color=gray!20
	}
]         
  \node[node1](ub) {9. \texttt{output}}[grow'=up]
  child { node[node1] {4. \texttt{str\_receiver}} } ; 
        \node[node1][above=2em](ob) at (ub-1.north)  {7. \texttt{sender}}[grow'=up]
          child { node[node1] {5. \texttt{bin\_str\_join}} 
             child{node[node1]{3. \texttt{bin\_str\_join}}
                child{node[node1]{2. \texttt{rel\_source}}
                   child{node{\includegraphics[width=4em]{example-image}}} 
                }
                child{node[node1]{0. \texttt{str\_source}}
                   child{node{\includegraphics[width=4em]{example-image}}} 
                }
                edge from parent node[left=2mm] {\num{2171,938e4}}
             }
             child{
                child[missing]
                child{node[node1]{1. \texttt{rel\_source}}
                   child{node{\includegraphics[width=4em]{example-image}}}
                }
                edge from parent node[right=2mm] {\num{2171,938e4}}
             }
          };
              
          \path[<->,very thick,shorten <=.5ex,shorten >=.5ex](ub-1) edge node[pos=.5,right]{\includegraphics[width=3.5em]{example-image}}(ob);

\path([xshift=2.75cm]ob-1-2.east)--++(1em,0)coordinate(h);
\draw[|-|,very thick]
(ob.south-|h)
-- node[xshift=.5cm][right]{Kernel}
(ob-1-1-1-1.north-|h)
;
\draw[|-|,very thick]
(ub-1.north-|h)
-- node[xshift=.5cm][right]{User}
(ub.south-|h)
; 
\end{tikzpicture}
\end{document}
Zuletzt geändert von Bartman am Di 16. Jan 2018, 02:32, insgesamt 1-mal geändert.

DEVV
Forum-Century
Forum-Century
Beiträge: 117
Registriert: Sa 31. Okt 2015, 17:06

Beitrag von DEVV »

Okay danke, wie bekomme ich denn einen Text links neben den Doppelpfeil?

Bartman
Forum-Meister
Forum-Meister
Beiträge: 2456
Registriert: Do 16. Jul 2009, 21:41
Wohnort: Hessische Provinz

Beitrag von Bartman »

DEVV hat geschrieben:Okay danke, wie bekomme ich denn einen Text links neben den Doppelpfeil?
\path[<->,very thick,shorten <=.5ex,shorten >=.5ex](ub-1) 
   edge node[pos=.5,right]{\includegraphics[width=3.5em]{example-image}}
        node[pos=.5,left]{Text}(ob);

DEVV
Forum-Century
Forum-Century
Beiträge: 117
Registriert: Sa 31. Okt 2015, 17:06

Beitrag von DEVV »

Okay danke. Und wie schaffe ich es etwas zwischen den puffer.png und den ersten Knoten zu schreiben (also auch an der Verbindung). Ich schaffe das nicht bei allen...


Bei der Kante von dem Bild zu 2. funktioniert es, bei der Kante von dem Bild zu 1. gibt es einen Fehler:
\begin{figure}[t]
			\begin{center}
			\scalebox{0.68}{
				\begin{tikzpicture}[sibling distance=8em]
    			\tikzset{node1/.style={rectangle,rounded corners,draw=black, align=center, top color=white, bottom color=gray!20}} 
    			
    			\node[node1](ub) {9. output}[grow'=up]
  child { node[node1] {4. str\_receiver} 
	edge from parent node[left=2mm] {$1882,563*10^1$}  
  } ; 
  		\node[node1][above=2em](ob) at (ub-1.north)  {7. sender}[grow'=up]
    		child { node[node1] {5. bin\_str\_join} 
    			child{node[node1]{3. bin\_str\_join}
    				child{node[node1]{2. rel\_source}
    					child{node{\includegraphics[width=4em]{puffer.png}}
						edge from parent node[left=2mm] {$\mathbf{5579,215*10^4}$}    					
    					} 
    					  }
    				child{node[node1]{0. str\_source}
    					child{node{\includegraphics[width=4em]{puffer.png}}} 
						edge from parent node[right=2mm] {$8600,473$}    					
    					}
    					edge from parent node[left=2mm] {$3403,057$}  
    					}
    		child{
    			child[missing]
    			child{node[node1]{1. rel\_source}
    				child{node{\includegraphics[width=4em]{puffer.png}}
					edge from parent node[right=0mm] {$\mathbf{2171,938*10^4}$}    				
    				}
					       				
    				}}
					edge from parent node[left=2mm]{$1627,428$}    				
    				};
  				
    		\path[<->,very thick,shorten <=.5ex,shorten >=.5ex](ub-1) 
    		edge node[pos=.5,right]{\includegraphics[width=3.5em]{Zeichnung.png}}
    		 node[pos=.5,left]{$\mathbf{7973,254*10^4}$}(ob);

\path([xshift=2.75cm]ob-1-2.east)--++(1em,0)coordinate(h);
\draw[|-|,very thick]
(ob.south-|h)
-- node[xshift=.5cm][right]{Kernel}
(ob-1-1-1-1.north-|h)
;
\draw[|-|,very thick]
(ub-1.north-|h)
-- node[xshift=.5cm][right]{User}
(ub.south-|h)
; 
    		\end{tikzpicture}}
		\end{center}    
\end{figure}

Bartman
Forum-Meister
Forum-Meister
Beiträge: 2456
Registriert: Do 16. Jul 2009, 21:41
Wohnort: Hessische Provinz

Beitrag von Bartman »

DEVV hat geschrieben:Und wie schaffe ich es etwas zwischen den puffer.png und den ersten Knoten zu schreiben (also auch an der Verbindung). Ich schaffe das nicht bei allen...

Bei der Kante von dem Bild zu 2. funktioniert es, bei der Kante von dem Bild zu 1. gibt es einen Fehler:
Abgesehen von der Fehlermeldung durch die Leerzeile, wird Deine Beschriftung zwischen der Puffer-Abbildung und 1. angezeigt.
\documentclass[tikz, border=5pt]{standalone}

\begin{document}
 \begin{tikzpicture}[sibling distance=8em]
             \tikzset{node1/.style={rectangle,rounded corners,draw=black, align=center, top color=white, bottom color=gray!20}}
             
             \node[node1](ub) {9. output}[grow'=up]
  child { node[node1] {4. str\_receiver}
   edge from parent node[left=2mm] {$1882,563*10^1$}  
  } ;
        \node[node1][above=2em](ob) at (ub-1.north)  {7. sender}[grow'=up]
          child { node[node1] {5. bin\_str\_join}
             child{node[node1]{3. bin\_str\_join}
                child{node[node1]{2. rel\_source}
                   child{node{\includegraphics[width=4em]{example-image}}
                  edge from parent node[left=2mm] {$\mathbf{5579,215*10^4}$}                  
                   }
                     }
                child{node[node1]{0. str\_source}
                   child{node{\includegraphics[width=4em]{example-image}}}
                  edge from parent node[right=2mm] {$8600,473$}                  
                   }
                   edge from parent node[left=2mm] {$3403,057$}  
                   }
          child{
             child[missing]
             child{node[node1]{1. rel\_source}
                child{node{\includegraphics[width=4em]{example-image}}
               edge from parent node[right] {$\mathbf{2171,938*10^4}$}
                }
% Die Leerzeile erzeugt ohne Kommentarzeichen eine Fehlermeldung
                }}
               edge from parent node[left=2mm]{$1627,428$}                
                };
             
          \path[<->,very thick,shorten <=.5ex,shorten >=.5ex](ub-1)
          edge node[pos=.5,right]{\includegraphics[width=3.5em]{example-image}}
           node[pos=.5,left]{$\mathbf{7973,254*10^4}$}(ob);

\path([xshift=2.75cm]ob-1-2.east)--++(1em,0)coordinate(h);
\draw[|-|,very thick]
(ob.south-|h)
-- node[xshift=.5cm][right]{Kernel}
(ob-1-1-1-1.north-|h)
;
\draw[|-|,very thick]
(ub-1.north-|h)
-- node[xshift=.5cm][right]{User}
(ub.south-|h)
;
\end{tikzpicture}
\end{document}

DEVV
Forum-Century
Forum-Century
Beiträge: 117
Registriert: Sa 31. Okt 2015, 17:06

Beitrag von DEVV »

Tausend Dank, es waren wirklich die Leeren Zeilen. Hätte ich nicht gedacht...

Eine letzte Frage habe ich: Wie schaffe ich, dass der Text von der Höhe her genau mittig neben der Linie haben möchte ? Bei der Verbindung von 1 nach 5 ist der Text nämlich zu weit oben.

Bartman
Forum-Meister
Forum-Meister
Beiträge: 2456
Registriert: Do 16. Jul 2009, 21:41
Wohnort: Hessische Provinz

Beitrag von Bartman »

DEVV hat geschrieben:Wie schaffe ich, dass der Text von der Höhe her genau mittig neben der Linie haben möchte ? Bei der Verbindung von 1 nach 5 ist der Text nämlich zu weit oben.
In meinem Lösungsversuch benutze ich die Option pos.
child{
   child[missing]
   child{node[node1]{1. rel\_source}
      child{node{\includegraphics[width=4em]{example-image}}
         edge from parent node[right] {$\mathbf{2171,938*10^4}$}
      }
% Die Leerzeile erzeugt ohne Kommentarzeichen eine Fehlermeldung
   }
   edge from parent node[pos=1, right=2mm] {Text}% <- eingefügt
}

Antworten