I only have first hand experience with PSTricks and PGF/TikZ. PS Tricks is more capable for plotting functions---especially when one accounts for the various extensions that exist for it (such as the 3d plots extension). The principal downsides to PSTricks are that (i) you can't use PDF LaTeX and (ii) mathematical function entry uses reverse Polish notation (RPN), which is not very intuitive.
TikZ works with PDFLaTeX, which is a big plus for me. Drawing in TikZ is structured around nodes, which I found very unintuitive for the longest time. Once you get used to this convention, though, they help you to achieve a lot of simple tasks (such as connecting two objects with an arrow, or labeling that arrow) very easily. Plotting with TikZ (via PGFPlots) is still capable, and this is now my usual solution.
The kTikZ/qTikZ application gives you a way to edit your PGF/TikZ figures in near-real time, which makes the process of learning the language much less onerous.
Both PSTricks and TikZ match the fonts with the rest of your document (especially important is that they get the font size right). They are also invoked by embedding the figures' code within your LaTeX file---I like the fact that this gives me a pretty self-contained docuemnt.
In my view, the PSTricks manual is better for looking up the solutions to specific problems. The TikZ manual is structured around tutorials that are great for learning the language, but less helpful if you want to quickly learn how to do something very specific. PGFplots has a separate manual which is more like the PSTricks one in style. In any event, all of the manuals are very useful.
Another option is GNUPlot, which can also be made to work with inline code via the gnuplottex package. Passing everything out to an external application before bringing it back into LaTeX always seemed a bit clunky to me though and so I have abandoned this solution.