Morphologischer Kasten, tikz

Tabellen und Grafiken erstellen und anordnen


FireFox
Forum-Anfänger
Forum-Anfänger
Beiträge: 27
Registriert: Di 19. Feb 2019, 16:33

Morphologischer Kasten, tikz

Beitrag von FireFox »

Hi,

blicke mit tikz noch nicht ganz durch.
Meine Probleme:
1. Ich würde gerne Spalte 3-5 Mittig anordnen, damit die Punkte der Verbindungslinien immer unter den Wörten sind
2. die unterste Linie müsste noch weiter runter
3. bei meiner günen verbindungslinie bekomme ich einen Fehler wenn ich m-4-4 durch m-4-5 erstezte, weiß aber nicht warum, der Punkt sollte bei der Gesamtgröße bei Groß sein

Habe mir bereits einige andere Beispiele angesehen, bin aber nicht weiter gekommen

Code: Alles auswählen

\documentclass[
fontsize=12pt,
twoside,
open=right,
toc=bibnumbered,
toc=listof,
ngerman
]{scrreprt}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{lmodern}

\usepackage{tikz}
\usetikzlibrary{matrix}
\usepackage{booktabs}
  
\usepackage{hyperref}


%%%%%%%%
\newlength\bildhoehe
\setlength\bildhoehe{1cm}
%\newcommand\bildbreite{1cm}
\newcommand\schrift{\footnotesize}% Einstellung für Bildbeschriftungen
\newcommand\zeilenabstand{.75\tabcolsep}

\newcommand\LV{\rule{0pt}{0.5\bildhoehe}}% Stütze, liefert nötige Höhe für Endpunkte

\tikzset{vp/.style={circle,fill,inner sep=2pt}}
\newcommand\verbindungslinie[3]{
  \foreach [remember=\p as \lastp (initially #2)] \p in {#3}
    \draw[#1]([yshift=.5\bildhoehe]\lastp.south)node[vp]{}--([yshift=.5\bildhoehe]
    \p.south)node[vp]{};
}

\begin{document}

\begin{center}
  \begin{minipage}{\linewidth}
    \captionof{table}{Morphologischer Kasten Getriebevarianten}\label{morphologischer_kasten}
   
    \begin{tikzpicture}
      \matrix[
          matrix of nodes ,
          inner sep=0pt,
          row sep=10pt,
		  column sep=15pt,
          column 2/.style={text width=5cm},
          column 3/.style={text width=3.5cm},
          column 4/.style={text width=3.5cm},
          column 5/.style={text width=3.5cm},
              ](m)
       {
           1& Übertragung
            & Schneckenradsatz
            & Innenradpaarung          
            & Strinradpaarung\\
           2& Schmierung
            & Tauchschmierung
            & Trockenschmierung
            & Sprühschmierung\\
           3& Gesamtgröße
            & Klein
            & Mittel
            & Groß\\
           4& Kleiner Durchlass            
            & Ja
            & Nein
            & \\
            &{}
            &{}
            &{}
            &{}\\
        };
% Kopfzeile
        \node(ul)[anchor=south west]
          at ([yshift={\zeilenabstand+\aboverulesep+\belowrulesep}]m.north west)
          {Teilfunktion};
        \node(or)[anchor=south east] at (ul.north-|m-1-2.east){Lösungsvarianten};
        \foreach[count=\i from 3] \l in {1,2,3}
          \node[anchor=base] at (or.base-|m-1-\i){\l};
% Tabellenlinien
        \draw[line width=\lightrulewidth](or.north-|ul.west)--(or.east|-ul.south)
          ([yshift=-\aboverulesep]ul.south-|m.west)
            --([yshift=-\aboverulesep]ul.south-|m.east);
        \draw[line width=\heavyrulewidth]([yshift=\belowrulesep]or.north-|m.west)
            --([yshift=\belowrulesep]or.north-|m.east)
          ([yshift={-\aboverulesep-\zeilenabstand}]m.south west)
            --([yshift={-\aboverulesep-\zeilenabstand}]m.south east);
% Verbindungslinien
        \verbindungslinie{red}{m-2-3}{m-3-3,m-4-3,m-5-3}
        \verbindungslinie{blue}{m-2-4}{m-3-4,m-4-4,m-5-3,m-5-4}
        \verbindungslinie{green}{m-2-5}{m-3-4,m-4-4,m-5-4,m-5-5}
        \foreach \f/\p/\t in {red/m-5-3/LV1,blue/m-5-4/LV2,green/m-5-5/LV3}
          \node[\f,below,font=\bfseries]at(\p){\t};
    \end{tikzpicture}
  \end{minipage}
\end{center}

\end{document}

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

Beitrag von Bartman »

Zu 3: Wie die Fehlermeldung schon sagt, ist der Name des Knoten unbekannt. Die Option nodes in empty cells hilft da weiter.

esdd
Forum-Meister
Forum-Meister
Beiträge: 2481
Registriert: So 7. Feb 2010, 16:36

Beitrag von esdd »

Mir ist jetzt nicht ganz klar, wie das Ergebnis aussehen soll. Das gilt für den Verlauf der Verbindungslinien und die Position der LVs unten.

Code: Alles auswählen

\documentclass[ 
  fontsize=12pt, 
  twoside, 
  open=right, 
  toc=bibnumbered, 
  toc=listof, 
  captions=abovetable,% <- ergänzt
  ngerman 
]{scrreprt} 
\usepackage[T1]{fontenc} 
\usepackage[utf8]{inputenc} 
\usepackage{babel} 
\usepackage{lmodern} 

\usepackage{tikz} 
\usetikzlibrary{matrix} 
\usepackage{booktabs} 
\usepackage{hyperref} 

\newcommand\zeilenabstand{10pt} 

\tikzset{vp/.style={circle,fill,inner sep=2pt}} 
\newcommand\verbindungslinie[3]{ 
  \node[#1,vp]at([yshift=-.15*\zeilenabstand]#2.south){};
  \foreach [remember=\p as \lastp (initially #2)] \p in {#3} 
    \draw[ultra thick,#1,draw opacity=.4]([yshift=-.15*\zeilenabstand]\lastp.south)--([yshift=-.15*\zeilenabstand]\p.south)node[vp]{}; 
} 

\begin{document} 
\begin{center} 
  \begin{minipage}{\linewidth} 
    \captionof{table}{Morphologischer Kasten Getriebevarianten}\label{morphologischer_kasten} 
    
    \begin{tikzpicture} 
      \matrix[ 
          matrix of nodes ,
          inner sep=0pt,
          row sep=\zeilenabstand,
          column sep=15pt,
          nodes={font=\strut},
          nodes in empty cells,
          column 2/.style={text width=5cm}, 
          column 3/.style={text width=3.5cm,align=center}, 
          column 4/.style={text width=3.5cm,align=center}, 
          column 5/.style={text width=3.5cm,align=center}
       ](m) 
       { 
           1& Übertragung 
            & Schneckenradsatz 
            & Innenradpaarung
            & Strinradpaarung\\ 
           2& Schmierung 
            & Tauchschmierung 
            & Trockenschmierung 
            & Sprühschmierung\\ 
           3& Gesamtgröße 
            & Klein 
            & Mittel 
            & Groß\\ 
           4& Kleiner Durchlass
            & Ja 
            & Nein 
            &\\ 
            &&&&\\
            &
            &|[red]|{\textbf{LV1}}
            &|[blue]|{\textbf{LV2}}
            &|[green]|{\textbf{LV3}}\\ 
        }; 
% Kopfzeile 
        \node(ul)[anchor=south west] 
          at ([yshift={\zeilenabstand+\aboverulesep+\belowrulesep}]m.north west) 
          {Teilfunktion}; 
        \node(or)[anchor=south east] at (ul.north-|m-1-2.east){Lösungsvarianten}; 
        \foreach[count=\i from 3] \l in {1,2,3} 
          \node[anchor=base] at (or.base-|m-1-\i){\l}; 
% Tabellenlinien 
        \draw[line width=\lightrulewidth](or.north-|ul.west)--(or.east|-ul.south) 
          ([yshift=-\aboverulesep]ul.south-|m.west) 
            --([yshift=-\aboverulesep]ul.south-|m.east); 
        \draw[line width=\heavyrulewidth]([yshift=\belowrulesep]or.north-|m.west) 
            --([yshift=\belowrulesep]or.north-|m.east) 
          ([yshift={-\aboverulesep}]m.south west) 
            --([yshift={-\aboverulesep}]m.south east); 
% Verbindungslinien 
        \verbindungslinie{red}{m-1-3}{m-2-3,m-3-3,m-4-3,m-5-3} 
        \verbindungslinie{blue}{m-1-4}{m-2-4,m-3-4,m-4-3,m-4-4,m-5-4} 
        \verbindungslinie{green}{m-1-5}{m-2-4,m-3-4,m-4-4,m-5-5} 
    \end{tikzpicture} 
  \end{minipage} 
\end{center} 
\end{document}

FireFox
Forum-Anfänger
Forum-Anfänger
Beiträge: 27
Registriert: Di 19. Feb 2019, 16:33

Beitrag von FireFox »

Vielen Dank,

genau wie esdd es gemacht hat soll es ausshen.
Finde die ganze Angelegenheit mit tikz schon sehr anspruchsvoll für einen latex Anfänger, umso dankbarer bin ich hier für die immer freundliche und schnelle Hilfe !

LG FireFox

Antworten