TeX - LaTeX Asked by Frank Zafka on August 10, 2021
I have been asked to generate this diagram.
From the MWE you can see that the only part I would like improved is the three wedge shaped icons on the left (patients, hospital staff, and visitors) and the 3 arrows. Couldn’t work out how to get that node shape, or join the arrows on right angles.
MWE:
documentclass[border={2pt 2pt 2pt 2pt}]{standalone}
usepackage{tikz}
usetikzlibrary{arrows,positioning}
usetikzlibrary{shapes.geometric,shapes.arrows,positioning}
begin{document}
begin{tikzpicture}[fill=red!20]
%draw[step=0.5cm,color=gray] (-15,-15) grid (15,15);
draw[thick, fill=blue!25] (-5,-5) -- (-5,7) -- (7,7) -- (7,-5)-- (-5,-5);
draw[thick, fill=red!25] (-4.8,-1) -- (-4.8,6.8) -- (6.8,6.8) -- (6.8,1)-- (3,1) -- (3,-1) -- (-4.8,-1);
draw[thick, fill=yellow!25] (-4.8,-1.2) -- (3.2,-1.2) -- (3.2,0.8) -- (6.8,0.8)-- (6.8,-4.8) -- (-4.8,-4.8) -- (-4.8,-1.2);
path
(0,.5) node(a) [fill=white,ellipse,draw,align=center]{ Milling & Meeting Area}
(-2.5,-2.5) node(b) [fill=white,rectangle,rotate=0,draw,align=center] { BeveragePantry}
(0.5,-2.5) node(c) [fill=white,rectangle,rotate=0,draw,align=center] { Offices}
(3.5,-2.5) node(d) [fill=white,rectangle,rotate=0,draw,align=center] { QuietRoom}
(0,-3) node(e) [rotate=0,align=center] { Secure Rooms}
(-3,-6) node(f) [draw, arrow box, arrow box arrows={north:.5cm}] { Volunteers}
(0,-6) node(g) [draw, arrow box, arrow box arrows={north:.5cm}] { Chaplains}
(3,-6) node(h) [draw, arrow box, arrow box arrows={north:.5cm,south:.5cm}] { Visiting on Wards}
(-6,1) node(i) [draw, arrow box, arrow box arrows={east:.5cm}] { Visitors}
(-6,0) node(j) [draw, arrow box, arrow box arrows={east:.5cm}] {Hospital Staff}
(-6,-1) node(k) [draw, arrow box, arrow box arrows={east:.5cm}] { Patients}
(-3.1,3.5) node(l) [fill=white,rectangle,rotate=0,draw,align=center] { Hindu & Sikh Prayer Room}
(-.5,3.5) node(m) [fill=white,rectangle,rotate=0,draw,align=center] { New St Luke'sChapel}
(2,3.5) node(n) [fill=white,rectangle,rotate=0,draw,align=center] { Main PublicSpace}
(5,3.5) node(o) [fill=white,rectangle,rotate=0,draw,align=center] { Muslim PrayerRooms &Washing Facilities}
(5,-1) node(p) [fill=white,rectangle,rotate=0,draw,align=center] {MDT Room}
(1,6) node(q) [rotate=0,align=center] {Large Open 24 hours a day}
;
draw[black,triangle 45-triangle 45] (a) -- (b);
draw[black,triangle 45-triangle 45] (a) -- (c);
draw[black,triangle 45-triangle 45] (b) -- (c);
draw[black,triangle 45-triangle 45] (a) -- (d);
draw[black,triangle 45-triangle 45] (l) -- (a);
draw[black,triangle 45-triangle 45] (m) -- (a);
draw[black,triangle 45-triangle 45] (n) -- (a);
draw[black,triangle 45-triangle 45] (o) -- (a);
draw[black,triangle 45-triangle 45] (p) -- (o);
draw[black,triangle 45-triangle 45] (j) -- (a);
draw[black,triangle 45-triangle 45] (o) -- (a);
draw[black,triangle 45-triangle 45] (p) -- (o);
draw[black,triangle 45-triangle 45] (i) -- (a);
draw[black,triangle 45-triangle 45] (k) -- (a);
draw[thick] (-4.8,-1.2) -- (3.2,-1.2) -- (3.2,0.8) -- (6.8,0.8)-- (6.8,-4.8) -- (-4.8,-4.8) -- (-4.8,-1.2);
end{tikzpicture}
end{document}
The following uses the shapes.symbols
library to get the signal
node shape which is what you're looking for to get the right look for Hospital Staff
etc.
I also changed their positioning (using the node (a)
to get the height right) and changed your arrows to get what you want.
documentclass[border={2pt 2pt 2pt 2pt}]{standalone}
usepackage{tikz}
usetikzlibrary{arrows,positioning}
usetikzlibrary{shapes.geometric,shapes.arrows,shapes.symbols,positioning}
begin{document}
begin{tikzpicture}[fill=red!20, in arrows/.style={signal, signal to=east, text width = 1.5cm, minimum height=2baselineskip, align=center}]
%draw[step=0.5cm,color=gray] (-15,-15) grid (15,15);
draw[thick, fill=blue!25] (-5,-5) -- (-5,7) -- (7,7) -- (7,-5)-- (-5,-5);
draw[thick, fill=red!25] (-4.8,-1) -- (-4.8,6.8) -- (6.8,6.8) -- (6.8,1)-- (3,1) -- (3,-1) -- (-4.8,-1);
draw[thick, fill=yellow!25] (-4.8,-1.2) -- (3.2,-1.2) -- (3.2,0.8) -- (6.8,0.8)-- (6.8,-4.8) -- (-4.8,-4.8) -- (-4.8,-1.2);
path
(0,.5) node(a) [fill=white,ellipse,draw,align=center]{ Milling & Meeting Area}
(-2.5,-2.5) node(b) [fill=white,rectangle,rotate=0,draw,align=center] { BeveragePantry}
(0.5,-2.5) node(c) [fill=white,rectangle,rotate=0,draw,align=center] { Offices}
(3.5,-2.5) node(d) [fill=white,rectangle,rotate=0,draw,align=center] { QuietRoom}
(0,-3) node(e) [rotate=0,align=center] { Secure Rooms}
(-3,-6) node(f) [draw, arrow box, arrow box arrows={north:.5cm}] { Volunteers}
(0,-6) node(g) [draw, arrow box, arrow box arrows={north:.5cm}] { Chaplains}
(3,-6) node(h) [draw, arrow box, arrow box arrows={north:.5cm,south:.5cm}] { Visiting on Wards}
(a)++(-5.5,0) node(j) [draw, anchor=east, in arrows] {Hospital Staff}
(j.east)++(0,1) node(i) [draw, anchor=east, in arrows] { Visitors}
(j.east)++(0,-1) node(k) [draw, anchor=east, in arrows] { Patients}
(-3.1,3.5) node(l) [fill=white,rectangle,rotate=0,draw,align=center] { Hindu & Sikh Prayer Room}
(-.5,3.5) node(m) [fill=white,rectangle,rotate=0,draw,align=center] { New St Luke'sChapel}
(2,3.5) node(n) [fill=white,rectangle,rotate=0,draw,align=center] { Main PublicSpace}
(5,3.5) node(o) [fill=white,rectangle,rotate=0,draw,align=center] { Muslim PrayerRooms &Washing Facilities}
(5,-1) node(p) [fill=white,rectangle,rotate=0,draw,align=center] {MDT Room}
(1,6) node(q) [rotate=0,align=center] {Large Open 24 hours a day}
;
draw[black,triangle 45-triangle 45] (a) -- (b);
draw[black,triangle 45-triangle 45] (a) -- (c);
draw[black,triangle 45-triangle 45] (b) -- (c);
draw[black,triangle 45-triangle 45] (a) -- (d);
draw[black,triangle 45-triangle 45] (l) -- (a);
draw[black,triangle 45-triangle 45] (m) -- (a);
draw[black,triangle 45-triangle 45] (n) -- (a);
draw[black,triangle 45-triangle 45] (o) -- (a);
draw[black,triangle 45-triangle 45] (p) -- (o);
draw[black,triangle 45-triangle 45] (o) -- (a);
draw[black,triangle 45-triangle 45] (p) -- (o);
draw[black, triangle 45-triangle 45] (i) -- ++(3,0) coordinate(tmp) |- (k);
draw[black, triangle 45-triangle 45] (j) -- (j-|tmp) -- (a);
draw[thick] (-4.8,-1.2) -- (3.2,-1.2) -- (3.2,0.8) -- (6.8,0.8)-- (6.8,-4.8) -- (-4.8,-4.8) -- (-4.8,-1.2);
end{tikzpicture}
end{document}
A code variant which uses styles for the basically same nodes with different text, foreach
for the repetitive task of drawing all those arrows, and cycle
where applicable.
documentclass[border={2pt 2pt 2pt 2pt}]{standalone}
usepackage{tikz}
usetikzlibrary{arrows}
usetikzlibrary{shapes.geometric,shapes.arrows,shapes.symbols}
begin{document}
begin{tikzpicture}[
fill=red!20,
in arrows/.style={draw, signal, signal to=east, text width = 1.5cm, minimum height=2baselineskip, align=center},
boxes/.style={fill=white, rectangle, draw, align=center},
arrowboxes/.style={draw, arrow box, arrow box arrows={#1}}
]
%draw[step=0.5cm,color=gray] (-15,-15) grid (15,15);
draw[thick, fill=blue!25] (-5,-5) -- (-5,7) -- (7,7) -- (7,-5)-- cycle;
draw[thick, fill=red!25] (-4.8,-1) -- (-4.8,6.8) -- (6.8,6.8) -- (6.8,1)-- (3,1) -- (3,-1) -- cycle;
draw[thick, fill=yellow!25] (-4.8,-1.2) -- (3.2,-1.2) -- (3.2,0.8) -- (6.8,0.8)-- (6.8,-4.8) -- (-4.8,-4.8) -- cycle;
path
(0,.5) node(a) [fill=white,ellipse,draw,align=center]{ Milling & Meeting Area}
(-2.5,-2.5) node(b) [boxes] { BeveragePantry}
(0.5,-2.5) node(c) [boxes] { Offices}
(3.5,-2.5) node(d) [boxes] { QuietRoom}
(0,-3) node(e) [align=center] { Secure Rooms}
(-3,-6) node(f) [arrowboxes={north:.5cm}] { Volunteers}
(0,-6) node(g) [arrowboxes={north:.5cm}] { Chaplains}
(3,-6) node(h) [arrowboxes={north:.5cm,south:.5cm}] { Visiting on Wards}
(a)++(-5.5,0) node(j) [anchor=east, in arrows] {Hospital Staff}
(j.east)++(0,1) node(i) [anchor=east, in arrows] { Visitors}
(j.east)++(0,-1) node(k) [anchor=east, in arrows] { Patients}
(-3.1,3.5) node(l) [boxes] { Hindu & Sikh Prayer Room}
(-.5,3.5) node(m) [boxes] { New St Luke'sChapel}
(2,3.5) node(n) [boxes] { Main PublicSpace}
(5,3.5) node(o) [boxes] { Muslim PrayerRooms &Washing Facilities}
(5,-1) node(p) [boxes] {MDT Room}
(1,6) node(q) {Large Open 24 hours a day}
;
foreachx in {b,c,d,l,m,n,o}
draw[black,triangle 45-triangle 45] (a) -- (x);
draw[black,triangle 45-triangle 45] (b) -- (c);
draw[black,triangle 45-triangle 45] (p) -- (o);
draw[black, triangle 45-triangle 45] (i) -- ++(3,0) coordinate(tmp) |- (k);
draw[black, triangle 45-triangle 45] (j) -- (j-|tmp) -- (a);
draw[thick] (-4.8,-1.2) -- (3.2,-1.2) -- (3.2,0.8) -- (6.8,0.8)-- (6.8,-4.8) -- (-4.8,-4.8) -- cycle;
end{tikzpicture}
end{document}
Correct answer by Skillmon on August 10, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP