A 3D chart library for Java applications (JavaFX, Swing or server-side).

Overview

Orson Charts

(C)opyright 2013-2020, by Object Refinery Limited. All rights reserved.

Version 2.0, 15 March 2020.

Overview

Orson Charts is a 3D chart library for the Java(tm) platform that can generate a wide variety of 3D charts for use in client-side applications (JavaFX and Swing) and server-side applications (with export to PDF, SVG, PNG and JPEG).

Orson Charts sample

Key features include:

  • multiple chart types: pie charts, bar charts (regular and stacked), line charts, area charts, scatter charts and surface plots;
  • mouse-enabled chart viewers in JavaFX and Swing provide 360 degree rotation and zooming for precise end-user view control;
  • configurable tool tip support;
  • interactive charts (mouse event support on all chart elements);
  • flexible data sources;
  • JSON format data import and export;
  • regular and logarithmic axis scales;
  • auto-adaptive axis labeling;
  • value and range marker annotations
  • support for PDF, SVG, PNG and JPG export of charts for reporting;
  • a clean and well-documented API with a high degree of chart configurability.

Orson Charts is very easy to use, and includes comprehensive Javadocs. It is licensed under the terms of the GNU General Public License version 3 or later. For companies that do not wish to be bound by the terms of the GPLv3, a commercial license can be purchased from Object Refinery Limited. The license permits royalty-free redistribution of the Orson Charts runtime jar file. Orson Charts requires JDK/JRE 11 or later. To use Orson Charts with JavaFX requires the Orson Charts FX extension project.

Documentation

The Javadoc generated documentation is the principal source of documentation for Orson Charts:

http://www.object-refinery.com/orsoncharts/javadoc/index.html

If there are topics that are not covered or not clear in the documentation, please let us know so that we can improve the coverage.

Demos

Demo applications can be found in the following projects at GitHub:

Building

You can build Orson Charts using Maven by issuing the following command from the root directory of the project:

mvn clean install

The build requires JDK 11 or later.

Reporting Bugs

If you find a bug in Orson Charts, please file a bug report at:

https://github.com/jfree/orson-charts/issues

More Info

You can find out more about Orson Charts at:

http://www.object-refinery.com/orsoncharts/

If you have any questions, don't hesitate to send a mail to [email protected].

History

Version 2.1 : not-yet-released

  • upgrade JUnit to version 5.

Version 2.0 : 15-Mar-2020

  • created a Java module (org.jfree.chart3d);
  • refactored into org.jfree.chart3d namespace;
  • fixed bug #4 in NumberAxis3D where tick label override is not applied.

Version 1.7 : 17-Nov-2017

  • removed JavaFX support to a separate project Orson Charts FX;
  • fixed cell content bug in GridElement;
  • fixed bug in GradientColorScale;
  • protect from NullPointerException in AbstractValueAxis3D;
  • streamline build by removing Ant build support and moving demo code to external projects.

Version 1.6 : 2-Nov-2016

  • added remove() method to XYZSeries and added change notification mechanism;
  • added remove() and removeAll() methods to XYZSeriesCollection and added change notification;
  • added generics to source files;
  • updated FXGraphics2D to version 1.5;
  • updated JFreeSVG to version 3.2.

Version 1.5 : 28-Jan-2016

  • added new LineXYZRenderer;
  • added option to invert axes;
  • fix exception when setting a new dataset using CategoryPlot3D.setDataset():
  • fix direction of mouse wheel zooming in JavaFX;
  • included FXGraphics2D version 1.3 as a dependency;
  • updated OrsonPDF to version 1.7;
  • updated JFreeSVG to version 3.0;
  • added pom.xml for Maven builds;
  • JavaFX demos brought up to match the Swing demos;
  • various Javadoc improvements.

Version 1.4 : 27-May-2014

  • added JavaFX support;
  • added support to marker elements and item labels for KEY_BEGIN_ELEMENT and KEY_END_ELEMENT rendering hints;
  • added JPEG export option;
  • added minAutoRangeLength attribute in AbstractValueAxis3D (this fixes a bug for plots where the length of the data range is zero, for example scatter plots with a single value);
  • fixed endless loop in axis range code for datasets with infinite values;
  • fixed bug in hinting for tick labels on NumberAxis3D;
  • fixed Utils.js functions that didn't work with Internet Explorer 9.

Version 1.3 : 11-Apr-2014

  • added chart mouse event and tooltip support for the chart viewer in Swing;
  • added item label support;
  • added JSON format data import and export;
  • new utility methods to extract an XYZDataset from a CategoryDataset3D;
  • fixed a clipping issue for panels with borders assigned;
  • added rendering hints for SVG output via JFreeSVG (to support tool-tips and mouse events on chart elements);
  • added JavaScript utility library to support JFreeSVG export;

Version 1.2 : 7-Mar-2014

  • added value and range markers for numerical axes, and category markers for category axes;
  • added a tickLabelOrientation attribute for axes so that tick labels can be drawn either perpendicular or parallel to the axis line;
  • added a logarithmic axis;
  • added theme support, with several built-in themes;
  • added template driven label generators for pie section labels and category axis labels;
  • added export to JPEG, plus options to configure the available export types;
  • optimized the rendering code to reduce memory usage;
  • put in place a localisation mechanism, and added German and Italian translations;
  • made the projection distance configurable in the chart viewer;
  • added series accessors for XYZSeriesCollection;
  • added yDimensionOverride attribute for CategoryPlot3D;
  • fixed an issue with the StackedBarRenderer and negative values;
  • incorporated various other bug fixes.

Version 1.1 : 23-Dec-2013

  • added surface plots (via the new SurfaceRenderer class and Chart3DFactory.createSurfaceChart());
  • added ColorScale and supporting classes for use by the surface charts;
  • added orientation attribute to control the chart legend orientation;
  • optimized rendering code for improved performance;
  • added missing change events for gridline attributes in CategoryPlot3D;
  • added constants including SCALE_TO_FIT_TARGET and CENTER_NO_SCALING to the Fit2D class;
  • added setColors(Color...) to AbstractCategoryRenderer3D and AbstractXYZRenderer3D;

Version 1.0 : 17-Nov-2013

This is the first public release of Orson Charts, we welcome your feedback and suggestions.

Comments
  • Attempting to run demo: SurfaceRendererDemo1 - Fails

    Attempting to run demo: SurfaceRendererDemo1 - Fails

    There are unresolved compilation problems in the download (java 1.8 compatability) Here are the errors:

    Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
    	The return types are incompatible for the inherited methods ColorScale.getRange(), AbstractColorScale.getRange()
    	Type mismatch: cannot convert from org.jfree.data.Range to com.orsoncharts.Range
    	The method percent(double) is undefined for the type Range
    

    I think this is also causing the constructor to choke in the demo: The constructor GradientColorScale(Range, Color, Color) is undefined

    I use JFreeChart quite a bit and would like to now add 3d charts... thus hoping this project is active and well maintained :-) Cheers!

    opened by charlesdavid 3
  • NumberAxis3D.getTickLabelFormatter() never used?

    NumberAxis3D.getTickLabelFormatter() never used?

    Hi,

    I was trying to change to format of the tick label using NumberAxis3D.setTickLabelFormatter - with no results. No matter what I set here the format is always the same.

    When checking, how the formatter is used in the library I get

    Usages of NumberAxis3D.getTickLabelFormatter [no occurrences]                
    

    so it seems that this feature isn't used at all?

    opened by ThomasDaheim 3
  • XYZPlot.axisChanged() method error ?

    XYZPlot.axisChanged() method error ?

    Hello and thanks for sharing this 3d Chart library :-)

    In method axisChanged() of xyzPlot (line 682) we have :

    public void axisChanged(Axis3DChangeEvent event) {
            this.yAxis.configureAsYAxis(this);
            fireChangeEvent(event.requiresWorldUpdate());
    }
    

    Shouldn't it be :

    public void axisChanged(Axis3DChangeEvent event) {
        	if(xAxis == event.getAxis()) 
        		xAxis.configureAsXAxis(this);
        	if(yAxis == event.getAxis()) 
        		yAxis.configureAsYAxis(this);
        	if(zAxis == event.getAxis()) 
        		zAxis.configureAsZAxis(this);
            fireChangeEvent(event.requiresWorldUpdate());
    }
    

    This is actually what I've done and it solved bad axis range.

    https://github.com/jfree/orson-charts/blob/master/src/main/java/org/jfree/chart3d/plot/XYZPlot.java

    opened by fbuloup 2
  • Fix for issue #4

    Fix for issue #4

    After some digging I have found that the setting of the tickLabelFormatter in NumberAxis3D.selectTick is required in cases where no other than the default has been set.

    So I have added a check against the NumberAxis3D default value and update only if not previously overwritten by the user.

    opened by ThomasDaheim 1
  • SurfaceChart with static data series

    SurfaceChart with static data series

    I am trying to figure out how to setup the following surface chart. Data is fft data VectorvFrequencies; // y axis lables (frequency) double[] dSingleRow; // each value is a frequency level Vector<double[]> vAllRows; // each row is another time sample Date is read in from a stream that is fft'ing a file, in csv it might look like: Time, 100Hz, 200Hz, 300Hz.... 1, -90, -89.4, -89... 2, -89.9, -88, -89.1... ...

    I have attached a sample plot produced by gnuplot Screenshot from 2021-08-30 12-11-19

    opened by howudodat 0
  • Show chart with SurfaceChart and XYZLineChart combined

    Show chart with SurfaceChart and XYZLineChart combined

    Hi,

    and here is another thing I wasn't able to achieve so far: Combine a SurfaceChart with a XYZLineChart in one chart.

    Usage: My GPXEditor should show a gpx track (XYZLineChart) on top of the SRTM height data (SurfaceChart).

    Again I'm failing to add a screenshot of how things should look like here :-( But hopefully, the idea is clear.

    Any hints are appreciated! Thomas

    opened by ThomasDaheim 0
  • Option to hide x-z lines in SurfaceChart

    Option to hide x-z lines in SurfaceChart

    Hi,

    first of all thanks for the great library!

    I'm currently trying to switch from jzy3d because of better support for zoom & export in orson-charts. While converting my code I have run into something I wasn't able to achieve: I would want to hide the x-y grid lines that are drawn on the surface chart. (Probably something simple to fix but I can't seem to find the option...).

    Will attach an image to cleare show what I mean - once I don't get any error when trying to add an attachment.

    Thanks for any hints, Thomas

    opened by ThomasDaheim 0
Releases(v2.1.0)
  • v2.1.0(Jan 23, 2022)

    Version 2.1.0 : 23-Jan-2022

    • bug fix - axis ranges not being updated correctly. See issue #9
    • clean-up - fix numerous warnings/hints highlighted by IntelliJ IDEA.
    • dependencies - upgraded JUnit to version 5;
    • build - set plugin versions in pom.xml.
    Source code(tar.gz)
    Source code(zip)
  • v2.0(Mar 15, 2020)

  • v1.7(Nov 16, 2017)

    • removed JavaFX support to a separate project Orson Charts FX;
    • fixed cell content bug in GridElement;
    • fixed bug in GradientColorScale;
    • protect from NullPointerException in AbstractValueAxis3D;
    • streamline build by removing Ant build support and moving demo code to external projects.
    Source code(tar.gz)
    Source code(zip)
Owner
David Gilbert
Java client side developer, creator of JFreeChart, Orson Charts (also for Android), JFreeSVG and FXGraphics2D.
David Gilbert
Java dataframe and visualization library

Tablesaw Overview Tablesaw is Java for data science. It includes a dataframe and a visualization library, as well as utilities for loading, transformi

Tablesaw 3.1k Jan 7, 2023
XChart is a light-weight Java library for plotting data.

XChart XChart is a light weight Java library for plotting data. Description XChart is a light-weight and convenient library for plotting data designed

Knowm 1.3k Dec 26, 2022
A scientific charting library focused on performance optimised real-time data visualisation at 25 Hz update rates for data sets with a few 10 thousand up to 5 million data points.

ChartFx ChartFx is a scientific charting library developed at GSI for FAIR with focus on performance optimised real-time data visualisation at 25 Hz u

GSI CS-CO/ACO 386 Jan 2, 2023
The Next Generation Logic Library

Introduction LogicNG is a Java Library for creating, manipulating and solving Boolean and Pseudo-Boolean formulas. It includes 100% Java implementatio

LogicNG 103 Nov 19, 2022
The foundational library of the Morpheus data science framework

Introduction The Morpheus library is designed to facilitate the development of high performance analytical software involving large datasets for both

Zavtech Systems 226 Dec 20, 2022
modular and modern graph-theory algorithms framework in Java

Erdos is a very light, modular and super easy to use modern Graph theoretic algorithms framework for Java. It contains graph algorithms that you can a

Erdos 111 Aug 14, 2022
The Mines Java Toolkit

The Mines Java Toolkit The Mines Java Toolkit (Mines JTK) is a set of Java packages and native (non-Java) software libraries for science and engineeri

Mines Java Toolkit 57 Nov 19, 2022
A 3D chart library for Java applications (JavaFX, Swing or server-side).

Orson Charts (C)opyright 2013-2020, by Object Refinery Limited. All rights reserved. Version 2.0, 15 March 2020. Overview Orson Charts is a 3D chart l

David Gilbert 96 Sep 27, 2022
A 2D chart library for Java applications (JavaFX, Swing or server-side).

JFreeChart Version 2.0.0, not yet released. Overview JFreeChart is a comprehensive free chart library for the Java(tm) platform that can be used on th

David Gilbert 946 Jan 5, 2023
EssentialClient is a client side mod originally forked from Carpet Client for 1.15.2 that implements new client side features

EssentialClient EssentialClient is a client side only mod originally forked from Carpet Client for 1.15.2 that implements new client side features. Th

null 62 Jan 3, 2023
A powerful 🚀 Android chart view / graph view library, supporting line- bar- pie- radar- bubble- and candlestick charts as well as scaling, panning and animations.

⚡ A powerful & easy to use chart library for Android ⚡ Charts is the iOS version of this library Table of Contents Quick Start Gradle Maven Documentat

Philipp Jahoda 36k Jan 9, 2023
Utilizando do Java swing e do banco de dados MySQL, criei esse projeto com intuito de práticar a conexão do Java com MySQL e as janelas do Java swing

MeusCursos.com Meu primeiro projeto sozinho Utilizando do Java swing e do banco de dados MySQL, criei esse projeto com intuito de práticar a conexão d

João Vitor Ferreira Peixoto 1 Apr 2, 2022
JavaFX or Swing + jpackage + Maven template project for generating native desktop applications.

Java + Maven + GitHub Actions = Native Desktop Apps JavaFX or Swing + jpackage + Maven template project for generating native desktop applications. Go

Will Iverson 243 Dec 24, 2022
Tray Icon implementation for JavaFX applications. Say goodbye to using AWT's SystemTray icon, instead use a JavaFX Tray Icon.

FXTrayIcon Library intended for use in JavaFX applications that makes adding a System Tray icon easier. The FXTrayIcon class handles all the messy AWT

Dustin Redmond 248 Dec 30, 2022
DataFX - is a JavaFX frameworks that provides additional features to create MVC based applications in JavaFX by providing routing and a context for CDI.

What you’ve stumbled upon here is a project that intends to make retrieving, massaging, populating, viewing, and editing data in JavaFX UI controls ea

Guigarage 110 Dec 29, 2022
Java Desktop (JavaFX and Swing) Component Inspector

Java Desktop (JavaFX and Swing) Component Inspector A Tool for help you to inspect the location and properties of certain components in a window hiera

TangoraBox 21 Oct 28, 2022
Tuya 37 Dec 26, 2022
This Web Application Allows A user to upload a two minutes Video. It uses Server Side Capabilities of Nodejs and Spring Boot .

VideoStreamingApplication Purpose Of This Application These days trend of short videos are on rise youtube recently realsed "Shorts" . So , taking ins

Prateek Kumar 57 Nov 13, 2022
Simple, server side api for drawing on maps with runtime only state and no id collisions

Simple, server side api for drawing on maps with runtime only state and no id collisions! It can be used in non-main/server threads for better performance/more fps.

null 7 Sep 2, 2022
BungeeCord/Spigot plugin that fixes Multi-world detection by simulating mod presence on the server side

Companion for map mods Unofficial BungeeCord and Spigot (Paper) companion plugin for Xaero's Minimap (and their World Map), JourneyMap and VoxelMap. T

Artur Khusainov 3 Sep 18, 2022