For visualizations that need to be shared IPython notebooks are great and work with Julia & R as well. The @interact widgets are fantastic for exploring data. Unfortunately interactive notebooks are difficult to post on a static website.
To answer the OP's other questions:
For that, I've been moving to a mix of html5/javascript/d3. While it's still a new-ish mix compared to matplotlib, there is something about being able to save all the data and computations to an html file which anyone with a decent browser can open and interact with is fantastic. I utilize this method to store my protocol records for experimental tests. One file can contain pretty self-describing data along with javascript code to nicely present it.