Erster Gehversuch mit TikZ

Tabellen und Grafiken erstellen und anordnen


Rolli
Forum-Guru
Forum-Guru
Beiträge: 382
Registriert: Mi 15. Feb 2017, 08:50
Wohnort: Mittelfranken

Erster Gehversuch mit TikZ

Beitrag von Rolli »

Hallo Community,

nach 2 Monaten steiler Lernkurve mit LaTeX bin ich endlich auch auf TikZ gestoßen. Das Handbuch ist ja riesengroß, vielleicht sogar zu groß, jedenfalls komme ich nicht damit zurecht.
Suche nach "text size" gibt genau 2 Treffer!

Unten mein allererster Gehversuch mit TikZ.

Meine Fragen dazu:

1. Bitte um Tipps, wie ich das evtl. eleganter machen könnte

2. Warum ist in der rechten Legende das P von "P1" und das "A" nicht genau über den Anfängen der darunter stehenden Pfeile? Ich vermute, wegen "scale=0.9"; das habe ich gemacht, um die Schrift etwas kleiner zu bekommen - einen Befehl dafür habe ich nicht gefunden (s.o.)

3. Warum ist die Grundlinie von "P1, P2" etwas höher als die von "Prozesse" (und analog "A, B" und "Betriebsmittel")?

4. Warum brauche ich bei den Quadraten anchor=west, damit "A" und "B" in der Mitte stehen, und bei den Ellipsen keinen anchor?
\documentclass{scrartcl}
\usepackage{tikz}
\usetikzlibrary{arrows}

\begin{document}

\begin{tikzpicture}[>=triangle 45, thick]
   \draw [color=blue, very thick] (-2.3, -0.3) rectangle (-1.7, 0.3) node [anchor=north east]{\color{black}\textbf{B}};
   \draw [color=blue, very thick] (+2.3, -0.3) rectangle (+1.7, 0.3) node [anchor=north west]{\color{black}\textbf{A}};
   \draw [color=blue, very thick] (0.0, +1.0)  ellipse (0.5cm and 0.3cm) node {\color{black}\textbf{P1}}; 
   \draw [color=blue, very thick] (0.0, -1.0)  ellipse (0.5cm and 0.3cm)node {\color{black}\textbf{P2}};
   \draw [->, shorten >=3pt](-2.0, 0.3) -- (-0.5, 1.0);
   \draw [->, shorten >=5pt, dashed](0.5, 1.0) -- (2.0, 0.3);
   \draw [->, shorten >=3pt](2.0, -0.3) -- (0.5, -1.0);
   \draw [->, shorten >=5pt, dashed](-0.5, -1.0) -- (-2.0, -0.3);
   \draw (3.0, 0.9) node [anchor=west, scale=0.9] {P1, P2}; \draw (4.4, 0.9) node [anchor=west, scale=0.9] {Prozesse};
   \draw (3.0, 0.4) node [anchor=west, scale=0.9] {A, B}; \draw (4.4, 0.4) node [anchor=west, scale=0.9] {Betriebsmittel};
   \draw [->] (3.0, -0.4) -- (4.0, -0.4); \draw (4.4, -0.4) node [anchor=west, scale=0.9] {Betriebsmittel-Zuweisung};
   \draw [->, dashed] (3.0, -0.9) -- (4.0, -0.9); \draw (4.4, -0.9) node [anchor=west, scale=0.9] {Betriebsmittel-Anforderung};
\end{tikzpicture}

\end{document}
Ich weiß, viele Fragen ...
Aber TikZ ist wirklich nicht einfach zu verstehen.

Gruß Rolli

Benutzeravatar
u_fischer
Forum-Meister
Forum-Meister
Beiträge: 4266
Registriert: Do 22. Nov 2012, 11:09
Kontaktdaten:

Beitrag von u_fischer »

2+ 3:

node haben Ränder. Setze inner (x|y)sep auf 0, wenn du die nicht willst.
scale tut da gar nichts, benütze z.B. font um die Schrift zu ändern. Setze den Anker auf base, wenn du entlang der Grundlinie ausrichten willst:

node [anchor=base west, font=\footnotesize,inner xsep=0pt] {P1, P2};

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

Beitrag von Bartman »

Zu 1:
\documentclass[tikz, border=5pt]{standalone}

\usepackage{array}

\usetikzlibrary{
	arrows.meta,% Gemäß Abschnitt 16.1 der Dokumentation soll die arrows-Bibliothek veraltet sein
	positioning,
	shapes
}

\begin{document}
\begin{tikzpicture}[
	every path/.style={
		>/.tip={Triangle[angle=45:8pt]},% Abschnitte 16.4.4 und 16.5
		->,
		shorten >=2pt,
		thick
	}
]
\begin{scope}[
	node distance=4mm and 12mm,
	nodes={
		font=\sffamily\bfseries,
		draw=blue, 
		very thick,
		inner sep=4pt
	},
	ellipse border/.style={
		ellipse, 
		inner ysep=3pt
	}
]
\node [ellipse border] (p1)                     {P1};
\node                  (a)  [below right=of p1] {A};
\node                  (b)  [below left =of p1] {B};
\node [ellipse border] (p2) [below right=of b]  {P2};
\end{scope}

\draw 		   (b.north) -- (p1.west);
\draw [dashed] (p1.east) -- (a.north);
\draw 		   (a.south) -- (p2.east);
\draw [dashed] (p2.west) -- (b.south);

\node [
	right=5mm of a, 
	font=\sffamily\footnotesize
] {
	\renewcommand*{\arraystretch}{1.5}
	\begin{tabular}{ll}
	P1, P2                              & Prozesse                   \\
	A, B                                & Betriebsmittel             \\[3mm]
	\tikz\draw          (0,0) -- (1,0); & Betriebsmittel-Zuweisung   \\
	\tikz\draw [dashed] (0,0) -- (1,0); & Betriebsmittel-Anforderung \\
	\end{tabular}
};
\end{tikzpicture}
\end{document}
Ich bevorzuge eine serifenlose Schrift in solchen Zeichnungen. Entferne einfach die entsprechenden Befehle, wenn Du anderer Meinung bist oder Deine Vorgabe es nicht zulässt.

Als Alternative zu dem Knoten mit einer tabular-Umgebung möchte ich noch die Möglichkeit der Verwendung einer Matrix nennen. In meiner Vorstellung einer Matrix-Variante könnte die Angabe fester Koordinaten für die Pfeile vermieden werden.

Rolli
Forum-Guru
Forum-Guru
Beiträge: 382
Registriert: Mi 15. Feb 2017, 08:50
Wohnort: Mittelfranken

Beitrag von Rolli »

Danke Euch! Immer wieder toll, wie einem hier geholfen wird.

Antworten