Skip to content
Snippets Groups Projects
README.md 5.79 KiB
Newer Older
## [![XChart](https://raw.githubusercontent.com/timmolter/XChart/develop/etc/XChart_64_64.png)](http://knowm.org/open-source/xchart) XChart
Tim Molter's avatar
Tim Molter committed
XChart is a light weight Java library for plotting data.
Tim Molter's avatar
Tim Molter committed

Tim Molter's avatar
Tim Molter committed
## Description
Tim Molter's avatar
Tim Molter committed
XChart is a light-weight and convenient library for plotting data designed to go from data to chart in the least amount of time possible and to take the guess-work out of customizing the chart style.
timmolter's avatar
timmolter committed

Tim Molter's avatar
Tim Molter committed
Usage is very simple: Create a `Chart` instance, add a series of data to it, and either save it or display it.
Tim Molter's avatar
Tim Molter committed
## Simplest Example
Tim Molter's avatar
Tim Molter committed

Tim Molter's avatar
Tim Molter committed
```java

Tim Molter's avatar
Tim Molter committed
    double[] xData = new double[] { 0.0, 1.0, 2.0 };
    double[] yData = new double[] { 2.0, 1.0, 0.0 };
Tim Molter's avatar
Tim Molter committed
    // Create Chart
    Chart chart = QuickChart.getChart("Sample Chart", "X", "Y", "y(x)", xData, yData);

    // Show it
    new SwingWrapper(chart).displayChart();

    // Save it
Tim Molter's avatar
Tim Molter committed
    BitmapEncoder.saveBitmap(chart, "./Sample_Chart", BitmapFormat.PNG);
Tim Molter's avatar
Tim Molter committed

Tim Molter's avatar
Tim Molter committed
    // or save it in high-res
Tim Molter's avatar
Tim Molter committed
    BitmapEncoder.saveBitmapWithDPI(chart, "./Sample_Chart_300_DPI", BitmapFormat.PNG, 300);
Tim Molter's avatar
Tim Molter committed
```
Tim Molter's avatar
Tim Molter committed

Tim Molter's avatar
Tim Molter committed
![](https://raw.githubusercontent.com/timmolter/XChart/develop/etc/XChart_Simplest.png)

Charts can be saved as JPG, PNG, GIF, BMP, EPS, SVG, and PDF.

## Chart Customization

All the styling options can be found in one of two possible places: 1) the Chart's `StyleManager` or 2) the series' `set` methods. With this chart customization design, all customization options can be quickly "discovered" using an IDE's built in "Content Assist". With centralized styling like this, there is no need to hunt around the entire charting API to find that one customization you're looking for - it's all right in one spot!

![](https://raw.githubusercontent.com/timmolter/XChart/develop/etc/XChart_Chart_Customization.png)
 
![](https://raw.githubusercontent.com/timmolter/XChart/develop/etc/XChart_Series_Customization.png)
 
## Chart Themes

XChart ships with three different themes: Default **XChart**, **GGPlot2** and **Matlab**. Using a different theme is as simple as setting the Chart's theme with the `theme` method of the `ChartBuilder`.

    Chart chart = new ChartBuilder().width(800).height(600).theme(ChartTheme.Matlab).build();

![](https://raw.githubusercontent.com/timmolter/XChart/develop/etc/XChart_Themes.png)
Tim Molter's avatar
Tim Molter committed

Tim Molter's avatar
Tim Molter committed
## Features
Tim Molter's avatar
Tim Molter committed

* [x] No required additional dependencies
* [x] ~100KB Jar
* [x] Line charts
* [x] Scatter charts
* [x] Area charts
* [x] Bar charts
* [x] Histogram charts
* [x] Error bars
* [x] Logarithmic axes
* [x] Date and category X-Axis
* [x] Multiple series
* [x] Extensive customization
Tim Molter's avatar
Tim Molter committed
* [x] Themes - XChart, GGPlot2, Matlab
Tim Molter's avatar
Tim Molter committed
* [x] Right-click, Save-As...
* [x] User-defined axes range
* [x] Custom legend placement
* [x] CSV import and export
* [x] High resolution chart export
Tim Molter's avatar
Tim Molter committed
* [x] Export as PNG, JPG, BMP, GIF with custom DPI setting
* [x] Export SVG, EPS and PDF using optional de.erichseifert.vectorgraphics2d library
Tim Molter's avatar
Tim Molter committed
* [x] Real-time charts
* [x] Java 6 and up
Tim Molter's avatar
Tim Molter committed

## What's Next?

Now go ahead and [study some more examples](http://knowm.org/open-source/xchart/xchart-example-code/), [download the thing](http://knowm.org/open-source/xchart/xchart-change-log) and [provide feedback](https://github.com/timmolter/XChart/issues).
Tim Molter's avatar
Tim Molter committed
 
Tim Molter's avatar
Tim Molter committed
## Getting Started
Tim Molter's avatar
Tim Molter committed
### Non-Maven
Download Jar: http://knowm.org/open-source/xchart/xchart-change-log
timmolter's avatar
timmolter committed

Tim Molter's avatar
Tim Molter committed
### Maven
Tim Molter's avatar
Tim Molter committed
The XChart release artifacts are hosted on Maven Central.
Tim Molter's avatar
Tim Molter committed

Tim Molter's avatar
Tim Molter committed
Add the XChart library as a dependency to your pom.xml file:
timmolter's avatar
timmolter committed

Tim Molter's avatar
Tim Molter committed
```xml
timmolter's avatar
timmolter committed
    <dependency>
Tim Molter's avatar
Tim Molter committed
        <groupId>com.xeiam.xchart</groupId>
        <artifactId>xchart</artifactId>
        <version>2.5.1</version>
timmolter's avatar
timmolter committed
    </dependency>
Tim Molter's avatar
Tim Molter committed
```
Tim Molter's avatar
Tim Molter committed
For snapshots, add the following to your pom.xml file:
Tim Molter's avatar
Tim Molter committed

Tim Molter's avatar
Tim Molter committed
```xml
Tim Molter's avatar
Tim Molter committed
    <repository>
Tim Molter's avatar
Tim Molter committed
      <id>sonatype-oss-snapshot</id>
Tim Molter's avatar
Tim Molter committed
      <snapshots/>
      <url>https://oss.sonatype.org/content/repositories/snapshots</url>
    </repository>
Tim Molter's avatar
Tim Molter committed
    <dependency>
      <groupId>com.xeiam.xchart</groupId>
Tim Molter's avatar
Tim Molter committed
      <artifactId>xchart</artifactId>
      <version>2.5.2-SNAPSHOT</version>
Tim Molter's avatar
Tim Molter committed
    </dependency>
Tim Molter's avatar
Tim Molter committed
```
Snapshots can be manually downloaded from Sonatyope: [https://oss.sonatype.org/content/groups/public/com/xeiam/xchart/xchart/](https://oss.sonatype.org/content/groups/public/com/xeiam/xchart/xchart/)
Tim Molter's avatar
Tim Molter committed

### SBT

To use XChart with the Scala Build Tool (SBT) add the following to your build.sbt

```scala
libraryDependencies += "com.xeiam.xchart" % "xchart" % "2.5.0" exclude("de.erichseifert.vectorgraphics2d", "VectorGraphics2D") withSources()
```
(SBT/Ivy does not seem to respect the optional [VectorGraphics2D](https://github.com/eseifert/vectorgraphics2d) dependency and as it does not exist in Maven Central the build will fail unless it is excluded or available in a local repository.)

Tim Molter's avatar
Tim Molter committed
## Building

#### general

    mvn clean package  
Tim Molter's avatar
Tim Molter committed
    mvn javadoc:aggregate  

#### maven-license-plugin

    mvn license:check
    mvn license:format
    mvn license:remove
Tim Molter's avatar
Tim Molter committed

## Running Demo
Tim Molter's avatar
Tim Molter committed
    cd /path/to/xchart-demo/jar/
    java -cp xchart-demo-2.5.1.jar:xchart-2.5.1.jar com.xeiam.xchart.demo.XChartDemo
Tim Molter's avatar
Tim Molter committed

Tim Molter's avatar
Tim Molter committed
## Bugs
Please report any bugs or submit feature requests to [XChart's Github issue tracker](https://github.com/timmolter/XChart/issues).  
Tim Molter's avatar
Tim Molter committed

Tim Molter's avatar
Tim Molter committed
## Continuous Integration
[![Build Status](https://travis-ci.org/timmolter/XChart.png?branch=develop)](https://travis-ci.org/timmolter/XChart.png)  
Tim Molter's avatar
Tim Molter committed
[Build History](https://travis-ci.org/timmolter/XChart/builds)  
Tim Molter's avatar
Tim Molter committed

## Donations

Donate with Bitcoin: [1JVyTP9v9z54dALuhDTZDQfS6FUjcKjPgZ](https://blockchain.info/address/1JVyTP9v9z54dALuhDTZDQfS6FUjcKjPgZ)

All donations will be used to pay bounties for new features, refactoring, etc. Please consider donating or even posting your own bounties on our [Issues Page](https://github.com/timmolter/xchart/issues?state=open). Open bounties and bounties paid thus far can be found on knowm's [bounties](http://knowm.org/open-source/) page.
Tim Molter's avatar
Tim Molter committed

## Release Information

We will announce new releases on our [Twitter page](https://twitter.com/Knowmorg).