I am writing a scientific experiment control program in java which includes a GUI.
I help choosing a charting library for this task. The program will contain two types of charts:
A line chart with a lot of data points (in the range of 10^4-10^5 points per plot) with a refresh rate of about once every 0.5-1 seconds, so performance is a factor. This chart will have to include to sets of data points with different scaling.
A scatter chart without many data points which must include error-bars, or some way of indicating the error in the points. Preferably both on the X and Y axis, in crosshair style for example.
Logarithmic scale is also a must and a good zoom tool and export tool would also be nice. I would prefer a solution for both charts with a single package of possible.
From the research I have done a nearly perfect option seems to be javaFX 2.0. From what I read, it has good performance and also looks great, but I can't seem to find an option for error-bars. Since I don't know javaFX at all, how simple is it to extend the charting library to include error bars, or is there an open source add on that includes this that I didn't find?
Another option is the Google charting library, which seems to have all the necessary features, however I am afraid that the refresh rate will be a problem in the first chart type. Is this a viable concern?
I have used JFreeChart, but I am concerned about the performance, and also found it very difficult to add small changes. These include a way to change the color of plotted points during run-time after the chart has been created as is possible in matlab. All this requires a lot of extra coding and time consumption which I am trying to avoid.
The last option which seems to be the most practical is JChart2D. It seems to have most of the functionality I need and my only problem with it is that it does not look very nice.
Does anyone have any recommendations for me? I plan to code this in as short a time as possible, and the worst case scenario is for me to discover that bugs in some third party package or that an option I need is unavailable and requires a lot of extra code, though it would be nice to learn something new.
This decision may of course affect the entire GUI package that I choose to use, which currently appears to be Swing.
Thanks,