informatikstudium-kit-abhaengigkeitsgraph.tex 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. \documentclass{article}
  2. \usepackage[pdftex,active,tightpage]{preview}
  3. \setlength\PreviewBorder{2mm}
  4. \usepackage[utf8]{inputenc} % this is needed for german umlauts
  5. \usepackage[ngerman]{babel} % this is needed for german umlauts
  6. \usepackage[T1]{fontenc} % this is needed for correct output of umlauts in pdf
  7. \usepackage{tikz}
  8. \usetikzlibrary{arrows,shapes}
  9. \usepackage{pgfplots}
  10. % argument #1: any options
  11. \newenvironment{customlegend}[1][]{%
  12. \begingroup
  13. % inits/clears the lists (which might be populated from previous
  14. % axes):
  15. \csname pgfplots@init@cleared@structures\endcsname
  16. \pgfplotsset{#1}%
  17. }{%
  18. % draws the legend:
  19. \csname pgfplots@createlegend\endcsname
  20. \endgroup
  21. }%
  22. % makes \addlegendimage available (typically only available within an
  23. % axis environment):
  24. \def\addlegendimage{\csname pgfplots@addlegendimage\endcsname}
  25. \begin{document}
  26. \begin{preview}
  27. \begin{tikzpicture}[>=stealth',shorten >=1pt,auto,node distance=3.5cm,
  28. pflicht/.style ={rectangle, draw=blue, thick, fill=blue!20,align=center, rounded corners, minimum height=2em},
  29. stammmodul/.style ={rectangle, draw=yellow, thick, fill=yellow!20,align=center, rounded corners, minimum height=2em},
  30. wahl/.style ={rectangle, draw=green, thick, fill=green!20,align=center, rounded corners, minimum height=2em},
  31. soft/.style ={rectangle, draw=red, thick, fill=red!20,align=center, rounded corners, minimum height=2em}]
  32. % Draw the vertices.
  33. \node[pflicht] (programmieren) {Programmieren};
  34. \node[pflicht] (gbi) [right of=programmieren] {GBI};
  35. \node[pflicht] (lai) [right of=gbi] {LA I};
  36. \node[pflicht] (anai) [right of=lai] {ANA I};
  37. \node[pflicht] (laii) [below of=lai] {LA II};
  38. \node[pflicht] (anaii) [below of=anai] {ANA II};
  39. \node[pflicht] (algi) [below of=gbi] {Algorithmen I};
  40. \node[pflicht] (swti) [below of=programmieren] {SWT I};
  41. \node[pflicht] (ro) [right of=anaii] {RO};
  42. \node[pflicht] (dt) [below of=ro] {DT};
  43. \node[pflicht] (wt) [left of=dt] {WT};
  44. \node[pflicht] (tgi) [left of=wt] {TGI};
  45. \node[pflicht] (os) [left of=tgi] {OS};
  46. \node[pflicht] (pse) [left of=os] {PSE};
  47. \node[soft] (tse) [left of=pse] {TSE};
  48. \node[pflicht] (numerik) [below of=pse] {Numerik};
  49. \node[pflicht] (datenbanken) [right of=numerik] {Datenbanken};
  50. \node[pflicht] (rechnernetze) [below of=wt] {Rechnernetze};
  51. \node[stammmodul] (KogSys) [right of=rechnernetze] {KogSys};
  52. \node[pflicht] (algii) [right of=datenbanken, below of=datenbanken] {Algorithmen II};
  53. \node[wahl] (icpc) [below of=algii] {ICPC};
  54. \node[wahl] (web) [left of=swti] {Web Engineering};
  55. % Connect vertices with edges and draw weights
  56. \path[->] (gbi) edge[thick] node[anchor=center,above,sloped] {\tiny{Automaten}} (tgi);
  57. \path[->] (algi) edge node {} (algii);
  58. \path[->] (tgi) edge node[anchor=center,above,sloped] {\tiny{ILP}} (algii);
  59. \path[->] (wt) edge node[anchor=center,above,sloped] {\tiny{Randomisierte Algorithmen}} (algii);
  60. \path[->] (wt) edge node[anchor=center,above,sloped] {\tiny{Bayes Regel}} (KogSys);
  61. \path[->] (dt) edge node[anchor=center,above,sloped] {\tiny{Zahlendarstellungen}} (ro);
  62. \path[->] (lai) edge[ultra thick] node[anchor=center,above,sloped] {\tiny{Gruppe, Körper, \dots}} (laii);
  63. \path[<->] (lai) edge node {} (gbi);
  64. \path[->] (lai) edge node[anchor=center,above,sloped] {\tiny{Matrixmultiplikation; Lösen von linearen Gleichungssystemen}} (numerik);
  65. \path[<->] (gbi) edge[bend left] node [anchor=center,above,sloped] {\tiny{Induktion}} (anai);
  66. \path[->] (anai) edge[ultra thick] node {} (anaii);
  67. \path[->] (laii) edge[bend left] node[anchor=center,above,sloped] {\tiny{Mathematische Strukturen}} (algii);
  68. \path[->] (programmieren) edge[very thick] node[anchor=center,above,sloped] {\tiny{Java}} (swti);
  69. \path[->] (programmieren) edge[bend left] node {} (pse);
  70. \path[->] (programmieren) edge node {} (os);
  71. \path[->] (swti) edge node {} (pse);
  72. \path[<->] (ro) edge node[anchor=center,above,sloped] {\tiny{Assembler, Adressierung, Caches}} (os);
  73. \path[<->] (algii) edge [very thick] node {} (icpc);
  74. \path[->] (swti) edge node[anchor=center,above,sloped] {\tiny{Prozessmodelle}} (web);
  75. \path[<->] (pse) edge[red] node {} (tse);
  76. \path[->] (laii) edge[red] node {} (pse);
  77. \path[->] (anaii) edge[red] node {} (pse);
  78. \path[->] (programmieren) edge[red, bend right] node {} (pse);
  79. \path[->] (algi) edge[red] node {} (pse);
  80. \path[->] (swti) edge[red, bend right] node {} (pse);
  81. \path[->] (gbi) edge[red] node {} (pse);
  82. \path[<->] (os) edge node[anchor=center,above,sloped] {\tiny{Paging}} (algii);
  83. \begin{customlegend}[legend entries={Pflichtmodul,Stammmodul,Wahlmodul,Softskill,Inhaltliche Abhängigkeit,Harte Abhängigkeit},legend style={at={(-3,-12)},anchor=center}]
  84. \addlegendimage{blue,fill=blue!20,area legend}
  85. \addlegendimage{yellow,fill=yellow!20,area legend}
  86. \addlegendimage{green,fill=green!20,area legend}
  87. \addlegendimage{red,fill=red!20,area legend}
  88. \addlegendimage{->,black,sharp plot}
  89. \addlegendimage{->,red,sharp plot}
  90. %\addlegendimage{red,fill=black!50!red,mark=*,sharp plot}
  91. %\addlegendimage{red,fill=black!50!red,ybar,ybar legend}
  92. \end{customlegend}
  93. \end{tikzpicture}
  94. \end{preview}
  95. \end{document}