Following the helpful answer of a previous question, there is still an unresolved issue, that the hourglass symbol (i.e. the text in custom node) is not centered, so that vertical edges are not in the middle. I tried also different html-style centering options, but with no success. Any method or a completely different approach would be welcome.
library(DiagrammeR)
graph <- "
digraph logistic_growth {
graph [rankdir = 'LR', bgcolor='none', fontsize=10]
node [shape = circle, fontsize=8, penwidth=0.7, fontname='Open Sans']
r [xlabel=' intrinsic growth rate']
K [xlabel=' carrying capacity']
node [shape = box, penwidth=2]
N [label='Population N']
node [shape = octagon, width='', penwidth=0.5, style='rounded', fixedsize=25]
Source Sink
node [shape=plaintext, width=0.2, height=0.2]
growth [label=<<table cellpadding='0' border='0' cellspacing='0'><tr><td height='10'></td></tr><tr><td><FONT POINT-SIZE='20'>⧖</FONT></td></tr><tr><td>growth</td></tr></table>>]
edge [penwidth=1.5]
Source -> growth [dir = none, color = 'blue' headclip=false]
growth -> N [dir = left, color = 'blue' tailclip=false]
N -> Sink
edge [penwidth=0.7, tailport = 'n', headport = 'n', constraint = false, color=tomato]
N -> growth
edge [penwidth=0.7, tailport = 'e', headport = 'n', constraint = false, color=tomato]
r -> growth
K -> growth
}
"
grViz(graph)

Here is a convoluted but solid solution.
Result:
dot input:
gvpr program (save as hourglass.gvpr):
Finally, the command line (Linux) (Windows can be broken into separate steps)