There's also R, which can produce a number
of nifty diagrams — see Graphical procedures
for an introduction (not exhaustive, as much functionality
comes via individual packages / object types). Its primary
focus is on statistics, but it provides a number of rather generic
plotting facilities which may be used for many other purposes as well. It
supports various output formats (Device drivers),
allows for custom arrangement of multiple figures, has low-level drawing commands, etc.
Statistics::R is a Perl wrapper around the R interpreter (though
I'm not sure how well it works under Windows...).