JChart2D Publisher's description
from Achim Westermann
JChart2D is an minimalistic charting library.
JChart2D is an minimalistic charting library . It is designed for displaying multiple traces consisting of tracepoints. JChart2D is centered around a single configureable swing widget: the Chart2D. It is a JComponent one can add to a java swing user interface.
- Easy usage: only a few lines of code are necessary to use a chart. No complex specification of data points, labels or grids necessary. This is done per default and may optionally be configured.
- Multiple traces with different behavior may be added to a single chart.
- Performance. JChart2D is designed for dynamic rendering. Rescaling is done per axis only and only if bounds are exceeded. New points within bounds are scaled without affecting old scalings. Minimum and maximum bounds of traces are cached and updated upon events. Invisible traces are not scaled and don't affect bounds.
AWT is the bottleneck: Non-visible calculations (scaling, rounding, event-handling, label calculation) do not impose high load even if a point is added with bounds changes every 2ms. But enlarging the window does. So scaling is bound to painting and the adapting painting frequency is limited to a configurable amount of milliseconds. For rendering traces polylines are drawn by default (instead of many calls to drawline for connecting points). No comparisons to other libraries available.
- Automatic choice of the unit - prefix (multiplier) according to the scientific unit system (nano , milli, tera, ..).
- Label formatter for scale labels via java.text.NumberFormat or java.text.DateFormat.
- Chooseable display of grids, labels, labeled scalepoints, coordinate tooltips, ... .
- Toolbox of UI controls for chart and traces via popup menus and menu bar. See the applet demo. Tip: right-click on the label of the trace to get controls for it.
- Traces may be rendered via lines, discs, dots (is a disc with radius 1) or filled polygons. Additionally strokes may be specified (only useful for lines I think). An open interface for further graphical representations of traces exists.
- Different axis implementations (settable from UI): linear, log e and log 10.
- Multiple axes on top,bottom, left and right side. Traces may be assigned to an x and an y axis that has been assigned to the chart and will be related to them.
- Different viewport implementations: Zooming (ZoomableChart), enforcing visible bounds even if data does not fill them,... .
- Exact visualisation of labeled scalepoints. No label of a scalepoint is ever rounded to the next current chosen decimal, instead the scalepoint is shifted to a position which represents an exact decimal.
- Fully resizable. The amount of labeled scalepoints may increase on choosing a bigger size.
- Deadlock - safe. Even this is hard to claim because testing depends on runtime behaviour of the current system, i did not encounter a deadlock situation while letting several threads modifiy traces all contained in the same chart (only the awt painting system may get pretty busy).
- Trace - implementations with different behaviour: unordered, ringbuffered, ordered, bijective, ...
- Highly configurable error bar API.
- Support for zooming (ZoomableChart)
- Charts may be saved as images (jpeg, gif, jpg,... depending on the image writers of the java VM implementation), a snapshot UI control allows this.
Program Release Status: Major Update
Program Install Support: Install Only