Seaborn is already a nice high level semantic plotting interface. I suppose it doesn't target HTML output in a web app, but its main API is very declarative, one big function call with detailed kwargs. A port to JS seems possible