I found Python's matplotlib to be fairly good. It is very powerful and customizable, the plots look pretty professional and the interface is not horrible (use the object way, not the matlab way, e.g. call ax.set_xlabel(...) not set_xlabel(...) and hope it's the correct axis). It can do animations and interactivity, but it's far from spectacular. Defaults aren't always great (seaborn extension helps with that) but overall one of the best options. Performance isn't great either compared to eg gnuplot, but for static images it rarely matters. Plus Python is already really popular for data analysis, so it's a nice combination.
I'm less familiar with D3/C3. If you're running dynamically in a browser, you have to use javascript (maybe webassembly will have some plotting libraries soon?), python is not available, so it's easy. On a desktop or server, I like Python better, both as a langauge and the extensive plotting library. (I imagine performance isn't great here either).