Erstellen eines Morphologischen Kastens mit Lualatex

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: Erstellen eines Morphologischen Kastens mit Lualatex

Re: Erstellen eines Morphologischen Kastens mit Lualatex

von Zoid » Di 3. Nov 2020, 14:47

gast hat geschrieben:
Di 3. Nov 2020, 14:40

warum gibst du nicht eine passende minimum height an?

Das würde sich auf die Zeilen mit ein und zweizeiligen Wörtern gleichermaßen auswirken, wodurch die Abbildung in ihrer Größe zu viel Platz wegnehmen würde.

Re: Erstellen eines Morphologischen Kastens mit Lualatex

von gast » Di 3. Nov 2020, 14:40

warum gibst du nicht eine passende minimum height an?

Re: Erstellen eines Morphologischen Kastens mit Lualatex

von Zoid » Di 3. Nov 2020, 11:33

Jetzt ist noch eine Frage aufgetaucht:
Ich würde gerne die Zellenhöhe einer Zeile gleichmäßig gestalten. Wie kann ich das machen?
In der ersten Spalte kommt es zu Zeilenumbrüchen, wodurch diese Zellen höher sind. Bei einzeiligen Zellen schrumpft die Höhe dann aber, sofern minimum height dort nicht entgegen wirkt.

Unbenannt.PNG

Wenn sich die Zeilenhöhe bei allen Zellen einer Spalte einheitlich gestalten lassen würde, dann wäre das super.

Re: Erstellen eines Morphologischen Kastens mit Lualatex

von Zoid » Di 3. Nov 2020, 11:05

Die Schriftgöße konnte ich durch den Zusatz

font=\tiny

in die eckige Klammer nach

\matrix

verkleinern.

Jetzt habe ich im Tikz Script die Möglichkeit zum Zeilenumbruch gefunden. S. 434 in https://texample.net//media/pgf/builds/ ... -11-04.pdf

Umsetzen konnte ich es, indem ich den

\textwidth=

in meinen Code hinzugefügt habe. Dadurch hat sich die Position der Schrift von center auf left geändert. Dies konnte durch

align=center

ausgelichen werden.

\documentclass[ngerman,12pt,a4paper,toc=listof,parskip=full,singlespacing=true]{scrreprt}
\setparsizes{0}{0}{0  plus 1fil}	% {Einzug}{Abstand}{Endzeilenleerraum}
\usepackage{tikz}
\usetikzlibrary{fit,matrix,shapes.geometric}
\usepackage{siunitx}
\usepackage[a4paper,lmargin={3cm},rmargin={2cm},tmargin={2,5cm},bmargin={2,5cm}]{geometry}

\begin{document}
\begin{tikzpicture}[
    font=\sffamily,
    circle mark/.style={
        draw=#1,
        shape=rectangle,
        thick,
        inner sep=1pt,
        minimum width=1cm
    },
    circle mark finish/.style={
        circle mark=red
    },
    circle mark unfinish/.style={
        circle mark=green
    },
    line/.style={red, thick},
    line thick/.style={black, ultra thick}
]
\matrix [
    matrix of nodes,
    nodes={
		text width=23mm, 
		draw, 
		minimum width=2.5cm, 
		minimum height=.7cm, 
		anchor=center,
		align=center
    },
    row sep=-\pgflinewidth,
    column sep=-\pgflinewidth,
    nodes in empty cells,
    row 1/.style={nodes={draw=none}},
    font=\tiny	% Schriftgröße
] (m) {
    |[draw]|Merkmal &&&&\\
	xxxxxxx\\ 
	- xxxxxxx & xxxx&xxxxx&xxxxxxxx&xxxx\\
	- xxxxx [\SI{}{\milli\meter}]&x,x&x,x&x,x&x,x\\
	- xxxxxxxxxxx & xxxxxxxxx & xxxxx xxxxxxxxx\\
	xxxxxxxxx\\
	- xxxxxxxxxxxxx&xxxxxxxxxxxx&xxxxxxxxxx\\
	- xxxxxxxxxxxxxx&xxxxxxx&xxx\\
	- xxxxxxxxxxxx- xxxxxxxxx&xxxxxxxxxxxxxx&\SI{100}{\celsius}\\
	xxxxxxx&xxxxxxxx&xxxxxxxxxx\\
	xxxxxxxxxx xxxxx&xxxxxxx&xxxxxxxxx\\
	xxxxxxxxxx&xxx xxxxx&xxx xxxxx\\
	xxxxxxxxxxx&xxxxxxxxxx&xxxxxxxxx&xxxxxx\\
	xxxxxxxxxxxxxxxx&xxxxxxx&xxxxxxxx&xxxxxx&xxxxxxx\\	
};

\node [draw, fit=(m-1-2)(m-1-5), inner sep=-.5\pgflinewidth, label=center:Ausprägung]{};

\draw [line thick] (m-1-1.north east) -- (m-14-1.south east);
\draw [line thick] (m-1-1.south west) -- (m-1-5.south east);
\draw [line,black] (m-1-5.north east) -- (m-14-5.south east);

\path [nodes=circle mark finish]
    (m-3-3) node (cm1) {\phantom{Ausprägung 1}}
    (m-4-5) node (cm2) {\phantom{Ausprägung 2}}
    (m-5-3) node (cm3) {\phantom{Ausprägung 3}}
    (m-7-3) node (cm4) {\phantom{Ausprägung 4}}
    (m-8-2) node (cm5) {\phantom{Ausprägung 5}}
    (m-9-2) node (cm6) {\phantom{Ausprägung 6}}
    (m-10-2) node (cm7) {\phantom{Ausprägung 7}}
    (m-11-3) node (cm8) {\phantom{Ausprägung 8}}
    (m-12-2) node (cm9) {\phantom{Ausprägung 9}}
    (m-13-4) node (cm10) {\phantom{Ausprägung 10}}
    (m-14-3) node (cm11) {\phantom{Ausprägung 11}}
;
\path [nodes=circle mark unfinish]
;

\draw [line] (cm1.east) -- (cm2.west);
\draw [line] (cm2.west) -- (cm3.east);
\draw [line] (cm3.south) -- (cm4.north);
\draw [line] (cm4.west) -- (cm5.east);
\draw [line] (cm5.south) -- (cm6.north);
\draw [line] (cm6.south) -- (cm7.north);
\draw [line] (cm7.east) -- (cm8.west);
\draw [line] (cm8.west) -- (cm9.east);
\draw [line] (cm9.east) -- (cm10.west);
\draw [line] (cm10.west) -- (cm11.east);
\end{tikzpicture}
\end{document}

Allerdings sind jetzt die untersten beiden roten Boxen breiter als die anderen, obwohl der Ihnalt nicht mehr ist. Ein ändern von

minimum width

bringt leider kein Ergebnis, die Boxen scheinen in ihrer Breite fest zu sein. Woran könnte das liegen? Hab ich irgendwo ein Deteil übersehen?

Unbenannt.PNG

EDIT: Es liegt an folgendem Eintrag:

\phantom{Ausprägung 11}

Der wird von der Nummerierung zweizeilig. Kürze ich den ein, dann lässt sich die Breite der Boxen noch weiter reduzieren.

Re: Erstellen eines Morphologischen Kastens mit Lualatex

von Zoid » Di 3. Nov 2020, 09:58

Ich hab die Grefik soweit aufgearbeitet, wie ich sie vom Informationsgehalt brauche. Leider sprengt sie bei weitem die Grenzen meiner Seite und sieht am Ende vom Layout auch nicht sehr zufiredenstellend aus. Unten der Code mit vergleichbaren Wörterlängen.

\documentclass[ngerman,12pt,a4paper,toc=listof,parskip=full,singlespacing=true]{scrreprt}
\setparsizes{0}{0}{0  plus 1fil}	% {Einzug}{Abstand}{Endzeilenleerraum}
\usepackage{tikz}
\usetikzlibrary{fit,matrix,shapes.geometric}
\usepackage{siunitx}
\usepackage[a4paper,lmargin={3cm},rmargin={2cm},tmargin={2,5cm},bmargin={2,5cm}]{geometry}

\begin{document}
\begin{tikzpicture}[
    font=\sffamily,
    circle mark/.style={
        draw=#1,
        shape=rectangle,
        thick,
        inner sep=1pt,
        minimum width=3cm
    },
    circle mark finish/.style={
        circle mark=red
    },
    circle mark unfinish/.style={
        circle mark=green
    },
    line/.style={red, thick},
    line thick/.style={black, ultra thick}
]
\matrix [
    matrix of nodes,
    nodes={
        draw, 
        minimum width=4.5cm, 
        minimum height=.7cm, 
        anchor=center
    },
    row sep=-\pgflinewidth,
    column sep=-\pgflinewidth,
    nodes in empty cells,
    row 1/.style={nodes={draw=none}}
] (m) {
    |[draw]|Merkmal &&&&\\
	xxxxxxx\\ 
	- xxxxxxx & xxxx&xxxxx&xxxxxxxx&xxxx\\
	- xxxxx [\SI{}{\milli\meter}]&x,x&x,x&x,x&x,x\\
	- xxxxxxxxxxx & xxxxxxxxx & xxxxx xxxxxxxxx\\
	xxxxxxxxx\\
	- xxxxxxxxxxxxx&xxxxxxxxxxxx&xxxxxxxxxx\\
	- xxxxxxxxxxxxxx&xxxxxxx&xxx\\
	- xxxxxxxxxxxxxxxxxxxxx&xxxxxxxxxxxxxx&\SI{100}{\celsius}\\
	xxxxxxx&xxxxxxxx&xxxxxxxxxx\\
	xxxxxxxxxx xxxxx&xxxxxxx&xxxxxxxxx\\
	xxxxxxxxxx&xxx xxxxx&xxx xxxxx\\
	xxxxxxxxxxx&xxxxxxxxxx&xxxxxxxxx&xxxxxx\\
	xxxxxxxxxxxxxxxx&xxxxxxx&xxxxxxxx&xxxxxx&xxxxxxxxx\\	
};

\node [draw, fit=(m-1-2)(m-1-5), inner sep=-.5\pgflinewidth, label=center:Ausprägung]{};

\draw [line thick] (m-1-1.north east) -- (m-14-1.south east);
\draw [line thick] (m-1-1.south west) -- (m-1-5.south east);
\draw [line,black] (m-1-5.north east) -- (m-14-5.south east);

\path [nodes=circle mark finish]
    (m-3-3) node (cm1) {\phantom{Ausprägung 1}}
    (m-4-5) node (cm2) {\phantom{Ausprägung 2}}
    (m-5-3) node (cm3) {\phantom{Ausprägung 3}}
    (m-7-3) node (cm4) {\phantom{Ausprägung 4}}
    (m-8-2) node (cm5) {\phantom{Ausprägung 5}}
    (m-9-2) node (cm6) {\phantom{Ausprägung 6}}
    (m-10-2) node (cm7) {\phantom{Ausprägung 7}}
    (m-11-3) node (cm8) {\phantom{Ausprägung 8}}
    (m-12-2) node (cm9) {\phantom{Ausprägung 9}}
    (m-13-4) node (cm10) {\phantom{Ausprägung 10}}
    (m-14-3) node (cm11) {\phantom{Ausprägung 11}}
;
\path [nodes=circle mark unfinish]
;

\draw [line] (cm1.east) -- (cm2.west);
\draw [line] (cm2.west) -- (cm3.east);
\draw [line] (cm3.south) -- (cm4.north);
\draw [line] (cm4.west) -- (cm5.east);
\draw [line] (cm5.south) -- (cm6.north);
\draw [line] (cm6.south) -- (cm7.north);
\draw [line] (cm7.east) -- (cm8.west);
\draw [line] (cm8.west) -- (cm9.east);
\draw [line] (cm9.east) -- (cm10.west);
\draw [line] (cm10.west) -- (cm11.east);
\end{tikzpicture}
\end{document}

Ich denke, ich werde doch nicht drumherum kommen, die vorher ausgeschlossenen Eigenschaften zu implementieren. ich weiß jetzt nicht, ob man die Probleme Stück für Stück abarbeitet oder alles auf einmal, dafür bin ich zu wenig im Denken für Programmierung drinne. (Offtopic: Vielleicht sollte ich auch einfach nochmal ein Zweitstudium aufnehmen und eine weiter Abschlussarbeit über das erstellen dieser Grafik verfassen, Material genug kommt da bestimmt zusammen.)

Ich versuche jetzt die Zellenbreit individuell anzupassen, sodass Zeilen mit geringerer Zellenanzahl sich auf die Breite von Zeilen mit hoher Zellenanzahl anpassen. Zudem versuche ich die Spaltenbreiten auf ein Minimum zu reduzieren und die Schriftart zu verkleinern. Eventuell kann man auch Zeilenumbrüche in den Zellen integrieren.
Fortschritte, sofern ich sie jemals verzeichnen sollte, werde ich einfach hier dokumentieren. Vielleicht hilft es jemandem in Zukunft ein ähnliches Vorhaben umzusetzen oder generell davon abzusehen.

Re: Erstellen eines Morphologischen Kastens mit Lualatex

von Bartman » Mo 2. Nov 2020, 20:42

\newcommand:

Parametrisierte TikZ-Stile:

  • Abschnitt 2.8 "Adding a Touch of Style"

  • Abschnitt 12.4 "Using Graphic Options"

Re: Erstellen eines Morphologischen Kastens mit Lualatex

von Zoid » Mo 2. Nov 2020, 20:09

Danke, das funktioniert erst mal so. Dann würd auch auf Grundlage davon weiterarbeiten.

Hab im Code noch gesehen, dass dort

draw=#1

verwendet wird und die Farbe der Ellipse mit

    circle mark finish/.style={
        circle mark=red
    },
    circle mark unfinish/.style={
        circle mark=green
    },

hinzugefügt wird. Welche Funktion hat dieses #1 genau? Ich kennen es im Ansatz von \newcommand, aber selbst da wird mir die Funktion nicht so wirklich deutlich oder versändlich.

Re: Erstellen eines Morphologischen Kastens mit Lualatex

von Bartman » Mo 2. Nov 2020, 17:54

Du hast bzgl. nodes recht. Der Stil ist vorhanden, aber erwartet, wie die Fehlermeldung sagt, einen Wert.

Wenn Du mit der Verbindung der Zellen 1-2 bis 1-5 eine gemeinsame Spaltenbeschriftung anstrebst, dann könnte ich mir das so vorstellen:

\documentclass[tikz]{standalone}
\usetikzlibrary{fit,matrix,shapes.geometric}

\begin{document}
\begin{tikzpicture}[
    font=\sffamily,
    circle mark/.style={
        draw=#1,
        shape=ellipse,
        thick,
        inner xsep=-3pt
    },
    circle mark finish/.style={
        circle mark=red
    },
    circle mark unfinish/.style={
        circle mark=green
    },
    line/.style={red, thick},
    line thick/.style={ultra thick}
]
\matrix [
    matrix of nodes,
    nodes={
        draw, 
        minimum width=2.6cm, 
        minimum height=.8cm, 
        anchor=center
    },
    row sep=-\pgflinewidth,
    column sep=-\pgflinewidth,
    nodes in empty cells,
    row 1/.style={nodes={draw=none}}
] (m) {
    |[draw]| Merkmal &&&&\\
    Merkmal 1 & Ausprägung 1 & Ausprägung 2 &  & \\
    Merkmal 2 & Ausprägung 1 & Ausprägung 2 & Ausprägung 3& \\
    Merkmal 3 & Ausprägung 1 & Ausprägung 2 & Ausprägung 3 & Ausprägung 4\\
};
\node [draw, fit=(m-1-2)(m-1-5), inner sep=-.5\pgflinewidth, label=center:Ausprägung]{};

\draw [line thick] 
    (m-1-1.north east) -- (m-4-1.south east)
    (m-1-1.south west) -- (m-1-5.south west)
;

\path [nodes=circle mark finish]
    (m-2-2) node (cm1) {\phantom{Ausprägung 1}}
    (m-4-4) node (cm3) {\phantom{Ausprägung 3}}
;
\path [nodes=circle mark unfinish]
    (m-3-3) node (cm2) {\phantom{Ausprägung 2}}
;
\draw [line] 
    (cm1.east) -- (cm2.west)
    (cm2.east) -- (cm3.west)
;
\end{tikzpicture}
\end{document}

Re: Erstellen eines Morphologischen Kastens mit Lualatex

von Zoid » Mo 2. Nov 2020, 17:40

Da dachte ich, dass nodes automatisch vordefiniert ist. Aber so klappt es auch, danke dafür.

Wie kann ich denn jetzt noch die Zellen 1-2 bis 1-5 miteinander verbinden und die Schrift mittig anordnen? Wäre praktisch, wenn man das quasi als eine node festlegen könnte, denke ich.

Der zuvor gewählt Ansatz zeichnet zwar irgendwas, aber bei mir ist die Schrift zu hoch und die Umrandung zu groß, außerdem sind die senkrechten dünnen Trennlinien in Zeile 1 immer noch zu sehen.

\node[draw,fit=(m-1-3)(m-1-4)]{Test};

Re: Erstellen eines Morphologischen Kastens mit Lualatex

von Bartman » Mo 2. Nov 2020, 16:21

Der Stil nodes ist in Deinen Beiträgen nirgends definiert und die Fehlermeldung verschwindet, wenn Du die Option nodes in empty cells hinzufügst.

\documentclass[tikz]{standalone}
\usetikzlibrary{fit,matrix,shapes.geometric}

\begin{document}
\begin{tikzpicture}[
    font=\sffamily,
    circle mark/.style={
        draw=#1,
        shape=ellipse,
        thick,
        inner xsep=-3pt
    },
    circle mark finish/.style={
        circle mark=red
    },
    circle mark unfinish/.style={
        circle mark=green
    },
    line/.style={red, thick},
    line thick/.style={ultra thick}
]
\matrix [
    matrix of nodes,
    nodes={
        draw, 
        minimum width=2.6cm, 
        minimum height=.8cm, 
        anchor=center
    },
    row sep=-\pgflinewidth,
    column sep=-\pgflinewidth,
    nodes in empty cells% <- eingefügt
%    execute at empty cell={\node{};}
] (m) {
    Merkmal & Ausprägung & & &\\
    Merkmal 1 & Ausprägung 1 & Ausprägung 2 &  & \\
    Merkmal 2 & Ausprägung 1 & Ausprägung 2 & Ausprägung 3& \\
    Merkmal 3 & Ausprägung 1 & Ausprägung 2 & Ausprägung 3 & Ausprägung 4\\
};
\node[draw,fit=(m-1-3)(m-1-4)]{Test};

\path [nodes=circle mark finish]
    (m-2-2) node (cm1) {\phantom{Ausprägung 1}}
    (m-4-4) node (cm3) {\phantom{Ausprägung 3}}
;
\path [nodes=circle mark unfinish]
    (m-3-3) node (cm2) {\phantom{Ausprägung 2}}
;
\draw [line] (cm1.east) -- (cm2.west);
\draw [line] (cm2.east) -- (cm3.west);

\draw [line thick] 
    (m-1-1.north east) -- (m-4-1.south east)
    (m-1-1.south west) -- (m-1-5.south west)
;
\end{tikzpicture}
\end{document}

Nach oben