It is very common in biology to draw diagrams like the one below to show regulatory interactions between genes:

You can see that this is essentially a graph, with 3 key elements:
- Nodes, which can be gene names (eg.
lin-1) or events (vulval fates). - Positive (activating) edges, shown by arrows (often green), which indicate that a gene induces the other.
- Negative (inhibitory) edges, shown by stubbly lines (often red), which indicate that a gene represses the other.
Sometimes, it may be necessary to make the edges very long or curved (when the two genes are far away). Occasionally, dotted or dashed edges can be used to show putative or proposed relationships.
Arrows may sometimes point to other arrows, eg. when a gene A enhances the ability of gene B to activate gene C. A slightly less trivial example:

The above is the bare minimum of what I want to do. Obviously, the layout of the graph is a whole different can of worms, but let's ignore that for now and assume that the user will manually layout the nodes.
Extra credit
It is possible to make such diagrams much more complicated, to emphasize nuances in manner of regulation (transcriptional, post-translational, localization, direct vs. indirect, etc). Here is a showcase of a proposed symbolic vocabulary from Kohn 2006. Here is another proposed vocabulary from Pirson 2000 and an example usage
