Grapher can do all of those except perhaps 2D plots. If you mean 2D plots of discrete data, then Grapher is probably not the right tool for that. Excel should do 2D data plots, though I've never used it for that.
Maple is commercial math software, and it's not cheap, but it'll do that stuff too. I suggest spending a little more time learning Grapher though.