Code für meinen Versuch

Code für meinen Versuch

Ich versuche das folgende "Flussdiagramm" zu zeichnen

Bildbeschreibung hier eingeben

Nach einigem Herumprobieren kam ich auf folgende Lösung

Bildbeschreibung hier eingeben

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 sunund einen y-Koordinatenwert von surface.north. Das pathFolgende 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 sepAnzahl der nodePfeile so angepasst, dass sie die Knoten nicht berühren. Bildbeschreibung hier eingeben

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}

Bildbeschreibung hier eingeben

verwandte Informationen