\usetikzlibrary{arrows.meta} \usetikzlibrary{shapes.geometric} \usetikzlibrary{patterns} % We put nodes in a separate layer, so we can % slightly overlap with paths for a perfect fit \pgfdeclarelayer{nodes} \pgfdeclarelayer{path} \pgfsetlayers{main,nodes} % Layer settings \tikzset{ % Layer hack, lets us write % later = * in scopes. layer/.style = { execute at begin scope={\pgfonlayer{#1}}, execute at end scope={\endpgfonlayer} }, % % Nodes main/.style = { draw, circle, fill = white }, % % Paths path/.style = { line width = 4mm, draw = black, % Lengthen paths so they're % completely under nodes. line cap = rect, opacity = 0.3 } }