d3 is amazing. There is no doubt about it. If you have a decent amount of time then perhaps you can start with this http://christopheviau.com/d3_tutorial/
Other than this, i have previously worked with Rickshaw(http://code.shutterstock.com/rickshaw/) as well. Although, i found it incredibly easy to implement, i personally find it a little poorly documented and found less resources and difficult to modify and play around.
With HTML5 canvas, be sure to check out the new ChartJS (http://www.chartjs.org/).
Take a look at http://www.highcharts.com/ too. I used highcharts a few weeks ago for an project in my company and I found it pretty simple to use. D3 does look interesting but I didn't have the time to learn it, with highcharts it seemed quicker for me to implement some graphs and get my project over with.
Having asked this same exact question before my answers, as some have mentioned below, are RaphaelJs and JqPlot. That said I am also looking into D3 which is also mentioned below. RaphaelJs has a number of controls based on it such as JustGage animated gauges(not by me but I have used it), and JqPlot which is highly configurable and seems to "just work".
A more simpler & easily configurable option is definitely RaphaelJS (http://raphaeljs.com/). Be sure to check out g.Raphael as well (http://g.raphaeljs.com/).
Other than this, i have previously worked with Rickshaw(http://code.shutterstock.com/rickshaw/) as well. Although, i found it incredibly easy to implement, i personally find it a little poorly documented and found less resources and difficult to modify and play around. With HTML5 canvas, be sure to check out the new ChartJS (http://www.chartjs.org/).
If in case, you are ready to shell out then HighCharts(http://www.highcharts.com/) and perhaps FusionCharts(http://www.fusioncharts.com/) are the way to go. Personally, i think i would go with Raphael.