Raphael is nice if your use case is fairly simple and along the lines of the examples provided on the homepage, but I would caution people that the lib is quite buggy and not (particularly?) actively maintained.
One that I actually had to fix (and submitted an as yet unacknowledged pull request for) was for arrow-ends: draw a path with an arrow head in blue, then draw one in red and watch every arrow-head on your page turn red.
Here are the 258 open issues in github:
https://github.com/DmitryBaranovskiy/raphael/issues
I'm not trying to bad-mouth other peoples' work; just point out the current state of the project as I've experienced it, for the benefit of others.