Ich versuche das folgende "Flussdiagramm" zu zeichnen
Nach einigem Herumprobieren kam ich auf folgende Lösung
Meine Probleme lassen sich im Wesentlichen auf zwei Dinge zurückführen
- Wie kann ich die Pfeile so ausrichten, dass sie die Kästchen im rechten Winkel treffen? Ich habe jetzt geraten und ungefähr abgeschätzt, wo ich sie platzieren soll.
- Gibt es eine einfache Möglichkeit, dicke Pfeile wie im Bild zu erhalten?
Alle alternativen Lösungen zum Erhalt des gewünschten Bildes sind wie immer willkommen.
Code für meinen Versuch
\documentclass{article}
\usepackage{xcolor}
\definecolor{UiT-main}{HTML}{003349}
\definecolor{UiT-red}{HTML}{CB333B}
\definecolor{UiT-blue}{HTML}{007396}
\definecolor{UiT-cyan}{HTML}{59BEC9}
\definecolor{UiT-orange}{HTML}{F2A900}
\usepackage{tikz}
\usetikzlibrary{shapes,arrows,calc}
% Define block styles
\tikzstyle{sun} = [circle,minimum height=0.6cm, draw, fill=UiT-orange,
text width=4.5em, text badly centered, node distance=3cm, inner sep=0pt]
\tikzstyle{sunEmpty} = [circle,minimum height=0.6cm,
text width=4.5em, text badly centered, node distance=3cm, inner sep=0pt]
\tikzstyle{block} = [rectangle, draw, fill=green!20,
text width=20em, text centered, minimum height=4em]
\tikzstyle{line} = [draw, -latex']
\begin{document}
\begin{tikzpicture}[node distance = 2cm, auto]
% Place nodes
\node [sun] (Sun) {Sun};
\node [sunEmpty,right of=Sun] (SunEmpty) {};
\node [block, right of=Sun, yshift=-2cm] (greenhouse) {Greenhouse layer};
\node [block, fill=black!20, below of=greenhouse, yshift=-2cm] (surface) {surface};
% Draw edges
\path [line] (Sun) -- node {}($(surface.north west)!0.23!(surface.north east)$);
\path [line,shorten <=0.25cm,shorten >=0.25cm] (surface) -- node {}(greenhouse);
\path [line] ($(greenhouse.north west)!0.64!(greenhouse.north east)$) -- node {}(SunEmpty.north);
\end{tikzpicture}
\end{document}
Antwort1
Wie kann ich die Pfeile so ausrichten, dass sie die Kästchen im rechten Winkel treffen? Ich habe jetzt geraten und ungefähr abgeschätzt, wo ich sie platzieren soll.
Die Koordinate (surface.north-|sun)
hat einen x-Koordinatenwert von sun
und einen y-Koordinatenwert von surface.north
. Das path
Folgende trifft also das Feld ( surface
) im rechten Winkel
\path (Sun) -- (surface.north-|Sun);
Gibt es eine einfache Möglichkeit, dicke Pfeile wie im Bild zu erhalten?
Zunahme line width
.
Außerdem wurde die outer sep
Anzahl der node
Pfeile so angepasst, dass sie die Knoten nicht berühren.
MWE
\documentclass[margin=3mm]{standalone}
\usepackage{xcolor}
\usepackage{tikz}
\definecolor{UiT-main}{HTML}{003349}
\definecolor{UiT-red}{HTML}{CB333B}
\definecolor{UiT-blue}{HTML}{007396}
\definecolor{UiT-cyan}{HTML}{59BEC9}
\definecolor{UiT-orange}{HTML}{F2A900}
% Define block styles
\tikzset{sunEmpty/.style={circle,minimum height=0.6cm,
text width=4.5em, text badly centered, node distance=3cm, inner sep=0pt, outer sep=1mm},
sun/.style={sunEmpty,draw,fill=UiT-orange},
block/.style={rectangle, draw, fill=green!20,
text width=20em, text centered, minimum height=4em, outer sep=1mm},
line/.style={-latex, line width=1.8mm, draw=blue!40}}
\begin{document}
\begin{tikzpicture}[node distance = 2cm, auto]
% Place nodes
\node [sun] (Sun) {Sun};
\node [sunEmpty,right of=Sun] (SunEmpty) {};
\node [block, right of=Sun, yshift=-2cm] (greenhouse) {Greenhouse layer};
\node [block, fill=black!20, below of=greenhouse, yshift=-2cm] (surface) {surface};
% Draw edges
\path [line,UiT-orange] (Sun) -- (surface.north-|Sun);
\path [line] (surface) -- (greenhouse);
\path [line] (greenhouse.north-|SunEmpty) -- (SunEmpty.north);
\end{tikzpicture}
\end{document}
EDIT - Eine bessere Version (danke anBenutzer121799)
\documentclass[margin=3mm,tikz]{standalone}
\usetikzlibrary{shapes.arrows,calc,shadows.blur,positioning}
\definecolor{UiT-main}{HTML}{003349}
\definecolor{UiT-red}{HTML}{CB333B}
\definecolor{UiT-blue}{HTML}{007396}
\definecolor{UiT-cyan}{HTML}{59BEC9}
\definecolor{UiT-orange}{HTML}{F2A900}
% Define block styles
\tikzset{sun/.style={circle,minimum height=0.6cm, draw, fill=UiT-orange,
text width=4.5em, text badly centered, node distance=3cm, inner sep=0pt, outer
sep=1mm},
sunEmpty/.style={circle,minimum height=0.6cm,
text width=4.5em, text badly centered, node distance=3cm, inner sep=0pt, outer
sep=1mm},
block/.style={rectangle, draw, fill=green!20,
text width=20em, text centered, minimum height=4em, outer sep=1mm},
line/.style={-latex, double arrow, line width=1.8mm, draw=blue!40}}
\begin{document}
\begin{tikzpicture}[node distance = 2cm, auto,
fat arrow/.style={% https://tex.stackexchange.com/a/432147/121799
to path={
let \p1 = ($(\tikztotarget)-(\tikztostart)$),
\n1 = {int(mod(scalar(atan2(\y1,\x1))+360, 360))}, % calculate angle in range [0,360)
\n2 = {veclen(\x1,\y1)}
in
-- (\tikztotarget)
node[inner xsep=0pt,inner ysep=5pt, % use inner ysep to set width
minimum height=\n2-\pgflinewidth,
single arrow,midway,sloped,anchor=center,
#1 % arguments passed to fat arrow added here
] {} \tikztonodes}
},
fat arrow/.default=, % empty default for argument of fat arrow
pft/.style={single arrow,draw=blue,blur
shadow,xshift=-2pt,minimum width=10mm, single arrow head extend=.2cm }
]
% Place nodes
\node [sun,blur shadow] (Sun) {Sun};
\node [sunEmpty,right=2.2cm of Sun] (SunEmpty) {};
\node [block, right of=Sun, yshift=-2cm,blur shadow,rounded corners=2pt] (greenhouse) {Greenhouse layer};
\node [block, fill=black!20, below of=greenhouse, yshift=-2cm,blur shadow,rounded corners=2pt] (surface) {surface};
% Draw edges
\path [fat arrow={pft,top color=UiT-orange!80,bottom color=UiT-orange}]
(Sun.south) to (surface.north-|Sun) ;
\path [fat arrow={pft,top color=blue!20,bottom color=blue!40}]
(surface.north) to (greenhouse.south);
\path [fat arrow={pft,top color=blue!20,bottom color=blue!40,minimum width=5mm}]
(greenhouse.north-|SunEmpty) to (SunEmpty.north);
\path [fat arrow={pft,top color=blue!20,bottom color=blue!40,minimum width=5mm}]
(greenhouse.south-|SunEmpty) to (surface.north-|SunEmpty);
\end{tikzpicture}
\end{document}