Cannot comment on JavaFX as I have no first hand experience, but in the past I have successfully used JFreeChart You can use it as standard swing 'JComponent'. Also, it has built in utilities to convert the generated chart to images, so it can be rendered over the web.
Another option you might want to evaluate is Cewolf
When I had to select a charting library, what I did was understand exactly what kind of information and interaction the client wanted, and then wrote small prototype programs to try out different frameworks before selecting one.
IMO, it's best to select a framework that minimizes the amount of custom code you have to write. If you have never done any graphics programming with Swing or JavaFX, you might find coding custom charts time consuming.
Another question is to ask yourself is do you need to code your own custom application at all? If you just want to iteratively analyze and visualize data, you can use ipython + matplotlib with very little coding.
If you do want to write your own application:
In the data science / statistics community, d3.js is popular for browser based charts and visualization.
In java desktop area, JFreechart + Swing is used more than JavaFX, but probably only because JFreechart and Swing have been around a lot longer than JavaFX.
If you want to avoid duplicating the same charting code in webapp and desktop app, write just the web version and use JavaFX's WebView embedded browser to show it inside desktop app.