I know that
TikZ was mentioned already, but I think it deserve its own answer. It is different from
Omnigraffle just like
TeX is different from
Word. But, if you're up for the effort, you'll enjoy the freedom of producing extremely high quality figures!
TikZ for "heavy" diagrams can lead to lengthy compilations, but this can be solved using the
externalize library of
TikZ, or the
TikZ is not at all WYSIWYG, there are several editors, that enable the use to draw "by hand" the diagram and export it to a
Tikz snippet. Personally, I don't have experience with this kind of combination.
Another advantage of
TikZ, that as it is somewhat a programing language (after all
TeX is turing-complete) you can program your diagram and use external data sources and visualize them. To that end, you can use a combination of
lua or other languages of your choice.
Finally, and most important;
TikZ provides an amazing live community which can help you with everything related to it. A perfect starting point would be the TeX.se.
PS: You can also have a look at
pstricks. It implements a similar spirit like
TikZ but... Well, I'm not using it so I cannot say much. I can say, that I saw amazing outputs of