<p>On a recent Java project, we needed a free Java based real-time data plotting utility.  After much searching, we found this tool called the <a href="http://www.epic.noaa.gov/java/sgt/" rel="noreferrer">Scientific Graphics Toolkit or SGT</a> from NOAA.  It seemed pretty robust, but we found out that it wasn't terribly configurable.  Or at least not configurable enough to meet our needs.  We ended up digging very deeply into the Java code and reverse engineering the code and changing it all around to make the plot tool look and act the way we wanted it to look and act.  Of course, this killed any chance for future upgrades from NOAA.  </p>

<p>So what free or cheap Java based data plotting tools or libraries do you use?</p>

<p><em>Followup:  Thanks for the <a href="http://www.jfree.org/jfreechart/" rel="noreferrer">JFreeChart</a> suggestions.  I checked out their website and it looks like a very nice data charting and plotting utility.  I should have made it clear in my original question that I was looking specifically to plot real-time data.  I corrected my question above to make that point clear.  It appears that <a href="http://www.jfree.org/jfreechart/faq.html#FAQ5" rel="noreferrer">JFreeChart support for live data is marginal at best, though</a>.  Any other suggestions out there?</em></p>

[{'answer_id': 6648, 'author': 'Chris Farmer', 'author_id': 404, 'author_profile': 'https://Stackoverflow.com/users/404', 'pm_score': 0, 'selected': False, 'text': '<p>I used JFreeChart (<a href="http://www.jfree.org/jfreechart/" rel="nofollow noreferrer">http://www.jfree.org/jfreechart/</a>) on a previous project.  It has some very good built-in capabilities, and the design was WAY extensible so you could always roll your own extension later if you needed some custom chart annotation or wanted an axis to render differently, or whatever.  It\'s definitely worth checking out.</p>\n'}, {'answer_id': 6655, 'author': 'Will', 'author_id': 816, 'author_profile': 'https://Stackoverflow.com/users/816', 'pm_score': 5, 'selected': True, 'text': '<p>I\'ve had success using <a href="http://www.jfree.org/jfreechart/" rel="noreferrer">JFreeChart</a> on multiple projects. It is <em>very</em> configurable. JFreeChart is open source, but they charge for the <a href="http://www.jfree.org/jfreechart/devguide.html" rel="noreferrer">developer guide</a>. If you\'re doing something simple, the sample code is probably good enough. Otherwise, $50 for the developer guide is a pretty good bargain.</p>\n\n<p>With respect to "real-time" data, I\'ve also used JFreeChart for these sorts of applications. Unfortunately, I had to create some custom data models with appropriate synchronization mechanisms to avoid race conditions. However, it wasn\'t terribly difficult and JFreeChart would still be my first choice. However, as the FAQ suggests, JFreeChart might not give you the best performance if that is a big concern.</p>\n'}, {'answer_id': 6683, 'author': 'cringe', 'author_id': 834, 'author_profile': 'https://Stackoverflow.com/users/834', 'pm_score': 0, 'selected': False, 'text': '<p>I\'ve used <a href="http://www.jfree.org/jfreechart/" rel="nofollow noreferrer">JFreeChart</a> in a rather complex application that needed to visualize data streams and calculations based on the data. We implemented the ability to visually edit the data plots by mouse and had a very large set of data points. JFreeChart handled it very well.</p>\n\n<p>Unfortunately I was stuck with v0.7, but the newest release are sooo much better when it comes to API clarity. The community is very helpful and the developers are responding to mails too.</p>\n\n<p>If you\'re doing a web application and don\'t want to bother with libraries, you can check the <a href="http://code.google.com/apis/chart/" rel="nofollow noreferrer">Google Chart API</a>. Didn\'t use it myself, but I started some tests which were very promising.</p>\n'}, {'answer_id': 194501, 'author': 'ddimitrov', 'author_id': 18187, 'author_profile': 'https://Stackoverflow.com/users/18187', 'pm_score': 0, 'selected': False, 'text': '<p>Check ILOG\'s <a href="http://www.ilog.com/products/jviews/" rel="nofollow noreferrer">JViews</a> - they have a lot of stuff and something might fit your needs. All of them are extremely configurable and quite fast. Not free though.</p>\n'}, {'answer_id': 520402, 'author': 'Community', 'author_id': -1, 'author_profile': 'https://Stackoverflow.com/users/-1', 'pm_score': 0, 'selected': False, 'text': '<p>For real-time plotting you can use QN Plot, JOpenChart or its fork Openchart2.</p>\n'}, {'answer_id': 520504, 'author': 'Adam Davis', 'author_id': 2915, 'author_profile': 'https://Stackoverflow.com/users/2915', 'pm_score': 0, 'selected': False, 'text': '<p>JHandles is an alternative graphics package for Octave (a math package).  It is probably worth looking into, but being Octave specific may not have what you need.</p>\n\n<p>-Adam</p>\n'}, {'answer_id': 555932, 'author': 'Jacek Ławrynowicz', 'author_id': 43399, 'author_profile': 'https://Stackoverflow.com/users/43399', 'pm_score': 2, 'selected': False, 'text': '<p><a href="http://www.live-graph.org/" rel="nofollow noreferrer">Live Graph</a> supports real-time rendering.</p>\n'}, {'answer_id': 863528, 'author': 'Jason S', 'author_id': 44330, 'author_profile': 'https://Stackoverflow.com/users/44330', 'pm_score': 2, 'selected': False, 'text': '<p>I just ran into a similar issue (displaying fast-updating data for engineering purposes), and I\'m using <a href="http://jchart2d.sourceforge.net/docs/javadoc/index.html" rel="nofollow noreferrer">JChart2D</a>. It\'s pretty minimalist and has a few quirks but it seems fairly fast: I\'m running a benchmark speed test where it\'s adding 2331 points per second (333x7 traces) to a strip chart and uses 1% of the CPU on my 3GHz Pentium 4.</p>\n'}, {'answer_id': 1881391, 'author': 'Tim', 'author_id': 228871, 'author_profile': 'https://Stackoverflow.com/users/228871', 'pm_score': -1, 'selected': False, 'text': '<p>You might want to check out JMathPlot</p>\n'}, {'answer_id': 3548418, 'author': 'Alessandro Brunelli', 'author_id': 428498, 'author_profile': 'https://Stackoverflow.com/users/428498', 'pm_score': 1, 'selected': False, 'text': '<p>The library I wrote, <a href="http://www.softpedia.com/get/Programming/Components-Libraries/Plot4j.shtml" rel="nofollow noreferrer">Plot4j</a>, also supports real-time plotting.</p>\n'}, {'answer_id': 3558349, 'author': 'Rick', 'author_id': 429745, 'author_profile': 'https://Stackoverflow.com/users/429745', 'pm_score': 2, 'selected': False, 'text': '<p>I\'m using <a href="http://trac.erichseifert.de/gral" rel="nofollow noreferrer">GRAL</a> for real-time plotting. It\'s an LGPL Java library. Although it\'s not as powerful as JFreeChart it has a nicer API. I got a plot up and running in very short time. They also ship a real-time plotting example.</p>\n'}, {'answer_id': 3867975, 'author': 'Jason', 'author_id': 361855, 'author_profile': 'https://Stackoverflow.com/users/361855', 'pm_score': 0, 'selected': False, 'text': '<p><a href="http://ptolemy.berkeley.edu/java/ptplot/" rel="nofollow">PtPlot</a>\nmay be a good choice.  Formerly called Ptolemy.</p>\n'}, {'answer_id': 8769904, 'author': 'kmera', 'author_id': 911228, 'author_profile': 'https://Stackoverflow.com/users/911228', 'pm_score': 2, 'selected': False, 'text': '<p>I found this question when I was googling for open source plotting libraries for java. I wasn\'t quite happy with the answers posted here so I did some further research on the issue.\nAlthough this question has been posted back in 2008 this might still be interesting to someone.</p>\n\n<p>Here is a list of <a href="http://java-source.net/open-source/charting-and-reporting" rel="nofollow">Open Source Charting &amp; Reporting Tools in Java</a></p>\n'}, {'answer_id': 11265300, 'author': 'Bob Weigel', 'author_id': 1491619, 'author_profile': 'https://Stackoverflow.com/users/1491619', 'pm_score': 1, 'selected': False, 'text': '<p><a href="http://autoplot.org/" rel="nofollow">http://autoplot.org/</a> allows for real-time updates and can be used to create many types of scientific plots.</p>\n\n<p>To update the plot, specify the URL to a data file and then append <code>&amp;filePollUpdates=1&amp;tail=100</code>.  See the example at <a href="http://autoplot.org/cookbook#Loading_Data" rel="nofollow">http://autoplot.org/cookbook#Loading_Data</a></p>\n'}, {'answer_id': 12954099, 'author': 'Hugh Perkins', 'author_id': 212731, 'author_profile': 'https://Stackoverflow.com/users/212731', 'pm_score': 0, 'selected': False, 'text': '<p>jcckit can handle real-time plotting.  It\'s a bear to use though.</p>\n\n<p>I forked it, and made a very simple wrapper around it for non-realtime plotting.  The underlying complicated interface can be used directly too.</p>\n\n<p><a href="https://bitbucket.org/hughperkins/easyjcckit" rel="nofollow">https://bitbucket.org/hughperkins/easyjcckit</a></p>\n'}, {'answer_id': 13782534, 'author': 'user1610348', 'author_id': 1610348, 'author_profile': 'https://Stackoverflow.com/users/1610348', 'pm_score': 1, 'selected': False, 'text': '<p>Waterloo Scientific Graphics is a new LGPL project. Data objects are observable and could be updated in a real time plotting scenario.\nFor details see <a href="http://waterloo.sourceforge.net/" rel="nofollow noreferrer">http://waterloo.sourceforge.net/</a></p>\n\n<p>A few screenshots:</p>\n\n<p><img src="https://i.stack.imgur.com/cSqxZ.png" alt="http://waterloo.sourceforge.net/images/AnatomyZ.png"></p>\n\n<p><img src="https://i.stack.imgur.com/NjLsK.png" alt="http://waterloo.sourceforge.net/images/contour.png"></p>\n\n<p><img src="https://i.stack.imgur.com/m8ABZ.png" alt="http://waterloo.sourceforge.net/images/errorbar.png"></p>\n'}]
['https://Stackoverflow.com/questions/6612', 'https://Stackoverflow.com', 'https://Stackoverflow.com/users/27687/']