Real-time Java graph / chart library?

39,131

Solution 1

What the FAQ actually says is that JFreeChart doesn't support hard real-time charting, meaning that the chart isn't updated when new data arrives or at deterministic interval after it. However I have found that JFreeChart can be used for the kind of applications you are describing. You can achieve 1 update per second, which is fine. I don't think a human eye can follow something quicker than this.

If you want something more than this, I doubt you will find anything in Java (or even in another language). Operating Systems that we use aren't designed to be real time. You can't have a guaranty that they will respond in a minimum interval after an event. A tight integration with the hardware driver will be needed to show more than 1-10 frames per second.

However, if you design your application correctly, the OS will do respond quickly and your application can easily display a "real-time" graph (meaning a graph that updates once a second). Just don't use your application to shut down a valve in an emergency situation!

Solution 2

http://www.live-graph.org/

Solution 3

Just stumbled upon a description on how to use the visualvm charting library. Looks very nice!

Solution 4

Well, if it has to be Java, then you might want to look into these.

Solution 5

have a look at processing -- it's an open-source, java-based environment designed for all sorts of animated visualizations.

Share:
39,131
Joonas Pulakka
Author by

Joonas Pulakka

I'm the glue that holds the gears of progress together.

Updated on July 09, 2022

Comments

  • Joonas Pulakka
    Joonas Pulakka almost 2 years

    There was an earlier thread on Java graph or chart library, where JFreeChart was found to be quite good, but, as stated in its FAQ, it's not meant for real-time rendering.

    Can anyone recommend a comparable library that supports real-time rendering? Just some basic xy-rendering - for instance, getting a voltage signal from data acquisition system and plotting it as it comes (time on x-axis, voltage on y-axis).