Seite 1 von 1
Werte an Verbindungen in Baumdarstellung
Verfasst: Sa 25. Feb 2017, 15:00
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.
Verfasst: Sa 25. Feb 2017, 16:24
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}
Verfasst: Sa 25. Feb 2017, 20:22
von DEVV
Okay danke, wie bekomme ich denn einen Text links neben den Doppelpfeil?
Verfasst: Sa 25. Feb 2017, 20:57
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);
Verfasst: So 26. Feb 2017, 12:25
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}
Verfasst: So 26. Feb 2017, 15:04
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}
Verfasst: So 26. Feb 2017, 19:35
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.
Verfasst: So 26. Feb 2017, 21:54
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
}