diff --git a/xchart-demo/src/main/java/com/xeiam/xchart/demo/XChartDemo.java b/xchart-demo/src/main/java/com/xeiam/xchart/demo/XChartDemo.java index 5bae95c0626bcafdd4c128a32c4bb972882a593f..a7f702cf19fa26947d9833e2c639df442bc73a66 100644 --- a/xchart-demo/src/main/java/com/xeiam/xchart/demo/XChartDemo.java +++ b/xchart-demo/src/main/java/com/xeiam/xchart/demo/XChartDemo.java @@ -29,17 +29,18 @@ import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.TreeSelectionModel; import com.xeiam.xchart.XChartPanel; -import com.xeiam.xchart.demo.charts.Example1; -import com.xeiam.xchart.demo.charts.Example10; -import com.xeiam.xchart.demo.charts.Example11; -import com.xeiam.xchart.demo.charts.Example2; -import com.xeiam.xchart.demo.charts.Example3; -import com.xeiam.xchart.demo.charts.Example4; -import com.xeiam.xchart.demo.charts.Example5; -import com.xeiam.xchart.demo.charts.Example6; -import com.xeiam.xchart.demo.charts.Example7; -import com.xeiam.xchart.demo.charts.Example8; -import com.xeiam.xchart.demo.charts.Example9; +import com.xeiam.xchart.demo.charts.line.LineChart01; +import com.xeiam.xchart.demo.charts.line.LineChart02; +import com.xeiam.xchart.demo.charts.line.LineChart03; +import com.xeiam.xchart.demo.charts.line.LineChart04; +import com.xeiam.xchart.demo.charts.line.LineChart05; +import com.xeiam.xchart.demo.charts.line.LineChart06; +import com.xeiam.xchart.demo.charts.line.LineChart07; +import com.xeiam.xchart.demo.charts.line.LineChart08; +import com.xeiam.xchart.demo.charts.line.LineChart09; +import com.xeiam.xchart.demo.charts.line.LineChart10; +import com.xeiam.xchart.demo.charts.line.LineChart11; +import com.xeiam.xchart.demo.charts.scatter.ScatterChart01; /** * Class containing all XChart example charts @@ -79,7 +80,7 @@ public class XChartDemo extends JPanel implements TreeSelectionListener { JScrollPane treeView = new JScrollPane(tree); // Create Chart Panel - chartPanel = new XChartPanel(new Example1().getChart()); + chartPanel = new XChartPanel(new LineChart01().getChart()); // Add the scroll panes to a split pane. splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT); @@ -129,41 +130,44 @@ public class XChartDemo extends JPanel implements TreeSelectionListener { category = new DefaultMutableTreeNode("Line Charts"); top.add(category); - chart = new DefaultMutableTreeNode(new ChartInfo("Example1 - Manual Data", new Example1().getChart())); + chart = new DefaultMutableTreeNode(new ChartInfo("LineChart01 - Manual Data", new LineChart01().getChart())); category.add(chart); - chart = new DefaultMutableTreeNode(new ChartInfo("Example2 - Customized series style", new Example2().getChart())); + chart = new DefaultMutableTreeNode(new ChartInfo("LineChart02 - Customized series style", new LineChart02().getChart())); category.add(chart); - chart = new DefaultMutableTreeNode(new ChartInfo("Example3 - Multiple curves on one Chart", new Example3().getChart())); + chart = new DefaultMutableTreeNode(new ChartInfo("LineChart03 - Multiple curves on one Chart", new LineChart03().getChart())); category.add(chart); - chart = new DefaultMutableTreeNode(new ChartInfo("Example4 - Date Axis", new Example4().getChart())); + chart = new DefaultMutableTreeNode(new ChartInfo("LineChart04 - Date Axis", new LineChart04().getChart())); category.add(chart); - chart = new DefaultMutableTreeNode(new ChartInfo("Example5 - Vertical and horizontal lines", new Example5().getChart())); + chart = new DefaultMutableTreeNode(new ChartInfo("LineChart05 - Vertical and horizontal lines", new LineChart05().getChart())); category.add(chart); - // Second category - category = new DefaultMutableTreeNode("More Charts"); - top.add(category); + chart = new DefaultMutableTreeNode(new ChartInfo("LineChart06 - Single point", new LineChart06().getChart())); + category.add(chart); - chart = new DefaultMutableTreeNode(new ChartInfo("Example6 - Single point", new Example6().getChart())); + chart = new DefaultMutableTreeNode(new ChartInfo("LineChart07 - Longs as X-Axis data", new LineChart07().getChart())); category.add(chart); - chart = new DefaultMutableTreeNode(new ChartInfo("Example7 - Longs as X-Axis data", new Example7().getChart())); + chart = new DefaultMutableTreeNode(new ChartInfo("LineChart08 - Error bars", new LineChart08().getChart())); category.add(chart); - chart = new DefaultMutableTreeNode(new ChartInfo("Example8 - Error bars", new Example8().getChart())); + chart = new DefaultMutableTreeNode(new ChartInfo("LineChart09 - Extensive chart customization", new LineChart09().getChart())); category.add(chart); - chart = new DefaultMutableTreeNode(new ChartInfo("Example9 - Extensive chart customization", new Example9().getChart())); + chart = new DefaultMutableTreeNode(new ChartInfo("LineChart10 - Plots Hundreds of Series on One Plot", new LineChart10().getChart())); category.add(chart); - chart = new DefaultMutableTreeNode(new ChartInfo("Example10 - Plots Hundreds of Series on One Plot", new Example10().getChart())); + chart = new DefaultMutableTreeNode(new ChartInfo("LineChart11 - Using ChartBuilder to Make a Chart", new LineChart11().getChart())); category.add(chart); - chart = new DefaultMutableTreeNode(new ChartInfo("Example11 - Using ChartBuilder to Make a Chart", new Example11().getChart())); + // Second category + category = new DefaultMutableTreeNode("Scatter Charts"); + top.add(category); + + chart = new DefaultMutableTreeNode(new ChartInfo("ScatterChart01 - Gaussian Blob Scatter Plot", new ScatterChart01().getChart())); category.add(chart); } diff --git a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/ExampleChart.java b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/line/ExampleChart.java similarity index 96% rename from xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/ExampleChart.java rename to xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/line/ExampleChart.java index 60c9cf863770df2a4d1d7c2a02be34433800b249..51815b690c5e6ff365cc4e22c47901db1acac552 100644 --- a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/ExampleChart.java +++ b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/line/ExampleChart.java @@ -19,7 +19,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -package com.xeiam.xchart.demo.charts; +package com.xeiam.xchart.demo.charts.line; import com.xeiam.xchart.Chart; diff --git a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example1.java b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/line/LineChart01.java similarity index 93% rename from xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example1.java rename to xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/line/LineChart01.java index 19e3cea8ee04eefc7318d0fc2a88d33455c70929..905e7bf55f084a27360cb66413ae2f05689877f4 100644 --- a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example1.java +++ b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/line/LineChart01.java @@ -13,26 +13,33 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.xeiam.xchart.demo.charts; +package com.xeiam.xchart.demo.charts.line; import java.util.Arrays; import java.util.Collection; import com.xeiam.xchart.Chart; +import com.xeiam.xchart.LineChart; import com.xeiam.xchart.SwingWrapper; import com.xeiam.xchart.style.Series; import com.xeiam.xchart.style.SeriesMarker; /** - * Manual Data + * Hardcoded Data + * <p> + * Demonstrates the following: + * <ul> + * <li>Series data hardcoded, perhaps copied from elsewhere</li> + * <li>LineChart without series markers</li> + * </ul> * * @author timmolter */ -public class Example1 implements ExampleChart { +public class LineChart01 implements ExampleChart { public static void main(String[] args) { - ExampleChart exampleChart = new Example1(); + ExampleChart exampleChart = new LineChart01(); Chart chart = exampleChart.getChart(); new SwingWrapper(chart).displayChart(); } @@ -53,6 +60,7 @@ public class Example1 implements ExampleChart { -0.491143625364344, -0.4842915805643152, -0.47552825814757643, -0.4648882429441252, -0.4524135262330092, -0.438153340021931, -0.42216396275100676, -0.4045084971874727, -0.3852566213878937, -0.36448431371070455, -0.3422735529643432, -0.31871199487434343, -0.29389262614623524, -0.26791339748949666, -0.2408768370508561, -0.2128896457825349, -0.18406227634233727, -0.15450849718747214, -0.12434494358242552, -0.0936906572928606, -0.06266661678215013, -0.03139525976465486, 2.097981369335578E-15 }; + Collection<Number> xData = Arrays.asList(xDataArray); Number[] yDataArray = new Number[] { 0.0, 1.5702142318133935E-5, 3.13688735543879E-5, 4.703341403158832E-5, 6.303295245179154E-5, 8.092859563778825E-5, 1.0594882618710001E-4, @@ -68,10 +76,11 @@ public class Example1 implements ExampleChart { -2.4744573769866404E-4, -2.4122358912925663E-4, -2.3473774775902484E-4, -2.2772135357722773E-4, -2.2006305955750752E-4, -2.1171197663128998E-4, -2.026763153011749E-4, -1.928814887412768E-4, -1.8242620113215842E-4, -1.712818057089484E-4, -1.5947175495155755E-4, -1.470534737044005E-4, -1.340464949116753E-4, -1.2051929111759324E-4, -1.0651565202537847E-4, -9.209212285608304E-5, -7.730521584738858E-5, -6.221344753211741E-5, -4.687672566856378E-5, -3.135450711247751E-5, -1.5708413280955366E-5, 1.0498035802487025E-18 }; + Collection<Number> yData = Arrays.asList(yDataArray); // Create Chart - Chart chart = new Chart(800, 600); + Chart chart = new LineChart(800, 600); // Customize Chart chart.setChartTitle("Example1"); diff --git a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example2.java b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/line/LineChart02.java similarity index 85% rename from xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example2.java rename to xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/line/LineChart02.java index 7eae57a537a23f09de76adaa82fd30b54890678c..c84f1b9aa4b393ae13621b7a43e29c23f95fbc85 100644 --- a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example2.java +++ b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/line/LineChart02.java @@ -13,12 +13,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.xeiam.xchart.demo.charts; +package com.xeiam.xchart.demo.charts.line; import java.util.ArrayList; import java.util.List; import com.xeiam.xchart.Chart; +import com.xeiam.xchart.LineChart; import com.xeiam.xchart.SwingWrapper; import com.xeiam.xchart.style.Series; import com.xeiam.xchart.style.SeriesColor; @@ -27,14 +28,19 @@ import com.xeiam.xchart.style.SeriesMarker; /** * Sine wave with customized series style + * <p> + * * Demonstrates the following: + * <ul> + * <li>Customizing the series style properties</li> + * </ul> * * @author timmolter */ -public class Example2 implements ExampleChart { +public class LineChart02 implements ExampleChart { public static void main(String[] args) { - ExampleChart exampleChart = new Example2(); + ExampleChart exampleChart = new LineChart02(); Chart chart = exampleChart.getChart(); new SwingWrapper(chart).displayChart(); } @@ -53,7 +59,7 @@ public class Example2 implements ExampleChart { } // Create Chart - Chart chart = new Chart(800, 600); + Chart chart = new LineChart(800, 600); // Customize Chart chart.getStyleManager().setChartTitleVisible(false); diff --git a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example3.java b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/line/LineChart03.java similarity index 87% rename from xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example3.java rename to xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/line/LineChart03.java index 9b4659d3921bb221ab28468a67c42a56298e5d99..a76c69dfc6f8526f1b28c950911f5816b70f103d 100644 --- a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example3.java +++ b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/line/LineChart03.java @@ -13,12 +13,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.xeiam.xchart.demo.charts; +package com.xeiam.xchart.demo.charts.line; import java.util.ArrayList; import java.util.Collection; import com.xeiam.xchart.Chart; +import com.xeiam.xchart.LineChart; import com.xeiam.xchart.SwingWrapper; /** @@ -26,11 +27,11 @@ import com.xeiam.xchart.SwingWrapper; * * @author timmolter */ -public class Example3 implements ExampleChart { +public class LineChart03 implements ExampleChart { public static void main(String[] args) { - ExampleChart exampleChart = new Example3(); + ExampleChart exampleChart = new LineChart03(); Chart chart = exampleChart.getChart(); new SwingWrapper(chart).displayChart(); } @@ -39,7 +40,7 @@ public class Example3 implements ExampleChart { public Chart getChart() { // Create Chart - Chart chart = new Chart(800, 600); + Chart chart = new LineChart(800, 600); for (int i = 1; i <= 14; i++) { diff --git a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example4.java b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/line/LineChart04.java similarity index 89% rename from xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example4.java rename to xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/line/LineChart04.java index b73bb55a202f30376c9c02120b5a42fb9d4ec2a6..efc9b7b386b29a70e78dc136af6bc7f2512d1fbe 100644 --- a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example4.java +++ b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/line/LineChart04.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.xeiam.xchart.demo.charts; +package com.xeiam.xchart.demo.charts.line; import java.text.DateFormat; import java.text.ParseException; @@ -24,6 +24,7 @@ import java.util.Date; import java.util.TimeZone; import com.xeiam.xchart.Chart; +import com.xeiam.xchart.LineChart; import com.xeiam.xchart.SwingWrapper; import com.xeiam.xchart.style.Series; @@ -32,11 +33,11 @@ import com.xeiam.xchart.style.Series; * * @author timmolter */ -public class Example4 implements ExampleChart { +public class LineChart04 implements ExampleChart { public static void main(String[] args) { - ExampleChart exampleChart = new Example4(); + ExampleChart exampleChart = new LineChart04(); Chart chart = exampleChart.getChart(); new SwingWrapper(chart).displayChart(); } @@ -45,7 +46,7 @@ public class Example4 implements ExampleChart { public Chart getChart() { // Create Chart - Chart chart = new Chart(800, 600); + Chart chart = new LineChart(800, 600); // generates linear data Collection<Date> xData = new ArrayList<Date>(); diff --git a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example5.java b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/line/LineChart05.java similarity index 84% rename from xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example5.java rename to xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/line/LineChart05.java index 7f8e95844f93e3477ee653bed065044a23693ae3..ff22f9c4368e85afcd18ef661cd3c6bc9d0a6976 100644 --- a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example5.java +++ b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/line/LineChart05.java @@ -13,9 +13,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.xeiam.xchart.demo.charts; +package com.xeiam.xchart.demo.charts.line; import com.xeiam.xchart.Chart; +import com.xeiam.xchart.LineChart; import com.xeiam.xchart.SwingWrapper; /** @@ -23,11 +24,11 @@ import com.xeiam.xchart.SwingWrapper; * * @author timmolter */ -public class Example5 implements ExampleChart { +public class LineChart05 implements ExampleChart { public static void main(String[] args) { - ExampleChart exampleChart = new Example5(); + ExampleChart exampleChart = new LineChart05(); Chart chart = exampleChart.getChart(); new SwingWrapper(chart).displayChart(); } @@ -36,7 +37,7 @@ public class Example5 implements ExampleChart { public Chart getChart() { // Create Chart - Chart chart = new Chart(800, 600); + Chart chart = new LineChart(800, 600); // Customize Chart chart.setChartTitle("Example5"); diff --git a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example6.java b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/line/LineChart06.java similarity index 83% rename from xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example6.java rename to xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/line/LineChart06.java index ef8b9e7326fc2be6ce876fa7888f8b1b89f80881..ab0f61dd782615c9ad9d505eb159e3ddd199ba53 100644 --- a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example6.java +++ b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/line/LineChart06.java @@ -13,9 +13,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.xeiam.xchart.demo.charts; +package com.xeiam.xchart.demo.charts.line; import com.xeiam.xchart.Chart; +import com.xeiam.xchart.LineChart; import com.xeiam.xchart.SwingWrapper; /** @@ -23,11 +24,11 @@ import com.xeiam.xchart.SwingWrapper; * * @author timmolter */ -public class Example6 implements ExampleChart { +public class LineChart06 implements ExampleChart { public static void main(String[] args) { - ExampleChart exampleChart = new Example6(); + ExampleChart exampleChart = new LineChart06(); Chart chart = exampleChart.getChart(); new SwingWrapper(chart).displayChart(); } @@ -36,7 +37,7 @@ public class Example6 implements ExampleChart { public Chart getChart() { // Create Chart - Chart chart = new Chart(800, 600); + Chart chart = new LineChart(800, 600); // Customize Chart chart.setChartTitle("Example6"); diff --git a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example7.java b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/line/LineChart07.java similarity index 86% rename from xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example7.java rename to xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/line/LineChart07.java index 0b006b1dd0897cad26b34921e61ae98e28ce6825..2506a99d77bb5c421c1c644cb2fe6f96257f699e 100644 --- a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example7.java +++ b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/line/LineChart07.java @@ -13,12 +13,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.xeiam.xchart.demo.charts; +package com.xeiam.xchart.demo.charts.line; import java.util.Arrays; import java.util.Collection; import com.xeiam.xchart.Chart; +import com.xeiam.xchart.LineChart; import com.xeiam.xchart.SwingWrapper; /** @@ -26,11 +27,11 @@ import com.xeiam.xchart.SwingWrapper; * * @author timmolter */ -public class Example7 implements ExampleChart { +public class LineChart07 implements ExampleChart { public static void main(String[] args) { - ExampleChart exampleChart = new Example7(); + ExampleChart exampleChart = new LineChart07(); Chart chart = exampleChart.getChart(); new SwingWrapper(chart).displayChart(); } @@ -42,7 +43,7 @@ public class Example7 implements ExampleChart { Collection<Number> yData = Arrays.asList(new Number[] { 0.0, 1.0, 2.0, 0.0, 1.0, 2.0, 0.0, 1.0, 2.0, 0.0 }); // Create Chart - Chart chart = new Chart(800, 600); + Chart chart = new LineChart(800, 600); chart.setChartTitle("Example7"); chart.setXAxisTitle("X"); chart.setYAxisTitle("Y"); diff --git a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example8.java b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/line/LineChart08.java similarity index 89% rename from xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example8.java rename to xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/line/LineChart08.java index ce2a4429f7731120b636936c2601342223ab9179..d7926a1ddeb84f81ca8970cb6ad9ff27be5e4d74 100644 --- a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example8.java +++ b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/line/LineChart08.java @@ -13,12 +13,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.xeiam.xchart.demo.charts; +package com.xeiam.xchart.demo.charts.line; import java.util.ArrayList; import java.util.Collection; import com.xeiam.xchart.Chart; +import com.xeiam.xchart.LineChart; import com.xeiam.xchart.SwingWrapper; import com.xeiam.xchart.style.Series; import com.xeiam.xchart.style.SeriesColor; @@ -30,11 +31,11 @@ import com.xeiam.xchart.style.SeriesMarker; * * @author timmolter */ -public class Example8 implements ExampleChart { +public class LineChart08 implements ExampleChart { public static void main(String[] args) { - ExampleChart exampleChart = new Example8(); + ExampleChart exampleChart = new LineChart08(); Chart chart = exampleChart.getChart(); new SwingWrapper(chart).displayChart(); } @@ -54,7 +55,7 @@ public class Example8 implements ExampleChart { } // Create Chart - Chart chart = new Chart(800, 600); + Chart chart = new LineChart(800, 600); // Customize Chart chart.getStyleManager().setChartTitleVisible(false); diff --git a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example9.java b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/line/LineChart09.java similarity index 93% rename from xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example9.java rename to xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/line/LineChart09.java index 9d669ed86f96d55f49c132dc19b0df2fb122840f..7be60a669aecf0fcfa79dc1b70e3ed2c35b49460 100644 --- a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example9.java +++ b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/line/LineChart09.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.xeiam.xchart.demo.charts; +package com.xeiam.xchart.demo.charts.line; import java.awt.Color; import java.awt.Font; @@ -26,6 +26,7 @@ import java.util.Date; import java.util.Locale; import com.xeiam.xchart.Chart; +import com.xeiam.xchart.LineChart; import com.xeiam.xchart.SwingWrapper; import com.xeiam.xchart.style.ChartColor; import com.xeiam.xchart.style.Series; @@ -38,11 +39,11 @@ import com.xeiam.xchart.style.SeriesMarker; * * @author timmolter */ -public class Example9 implements ExampleChart { +public class LineChart09 implements ExampleChart { public static void main(String[] args) { - ExampleChart exampleChart = new Example9(); + ExampleChart exampleChart = new LineChart09(); Chart chart = exampleChart.getChart(); new SwingWrapper(chart).displayChart(); } @@ -51,7 +52,7 @@ public class Example9 implements ExampleChart { public Chart getChart() { // Create Chart - Chart chart = new Chart(800, 600); + Chart chart = new LineChart(800, 600); // generates linear data Collection<Date> xData = new ArrayList<Date>(); diff --git a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example10.java b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/line/LineChart10.java similarity index 88% rename from xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example10.java rename to xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/line/LineChart10.java index 422ca389f82d3aef57364d28007b7e1e6e92edf0..4dfd9c351fe457ae8a12622934f111fc9595bda0 100644 --- a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example10.java +++ b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/line/LineChart10.java @@ -13,9 +13,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.xeiam.xchart.demo.charts; +package com.xeiam.xchart.demo.charts.line; import com.xeiam.xchart.Chart; +import com.xeiam.xchart.LineChart; import com.xeiam.xchart.SwingWrapper; import com.xeiam.xchart.style.Series; import com.xeiam.xchart.style.SeriesColor; @@ -27,11 +28,11 @@ import com.xeiam.xchart.style.SeriesMarker; * * @author timmolter */ -public class Example10 implements ExampleChart { +public class LineChart10 implements ExampleChart { public static void main(String[] args) { - ExampleChart exampleChart = new Example10(); + ExampleChart exampleChart = new LineChart10(); Chart chart = exampleChart.getChart(); new SwingWrapper(chart).displayChart(); } @@ -40,7 +41,7 @@ public class Example10 implements ExampleChart { public Chart getChart() { // Create Chart - Chart chart = new Chart(800, 600); + Chart chart = new LineChart(800, 600); // Customize Chart chart.setChartTitle("Example10"); diff --git a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example11.java b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/line/LineChart11.java similarity index 84% rename from xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example11.java rename to xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/line/LineChart11.java index 109ee4b447dd72c90d103e0d254c4ca502e14bf2..690ce8f318523b91061dee4f7758297f6ba6b127 100644 --- a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/Example11.java +++ b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/line/LineChart11.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.xeiam.xchart.demo.charts; +package com.xeiam.xchart.demo.charts.line; import com.xeiam.xchart.Chart; import com.xeiam.xchart.ChartBuilder; @@ -24,11 +24,11 @@ import com.xeiam.xchart.SwingWrapper; * * @author timmolter */ -public class Example11 implements ExampleChart { +public class LineChart11 implements ExampleChart { public static void main(String[] args) { - ExampleChart exampleChart = new Example11(); + ExampleChart exampleChart = new LineChart11(); Chart chart = exampleChart.getChart(); new SwingWrapper(chart).displayChart(); } @@ -37,7 +37,7 @@ public class Example11 implements ExampleChart { public Chart getChart() { // Create Chart - Chart chart = new ChartBuilder().width(800).height(600).title("My Title").xAxisTitle("X").yAxisTitle("Y").showLegend(false).build(); + Chart chart = new ChartBuilder().width(800).height(600).title("My Title").xAxisTitle("X").yAxisTitle("Y").build(); chart.addSeries("x", new double[] { 1, 2, 5, 7 }, new double[] { -3, 6, 9, 0 }); return chart; diff --git a/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/scatter/ScatterChart01.java b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/scatter/ScatterChart01.java new file mode 100644 index 0000000000000000000000000000000000000000..86afcc66942995a6cd691346edc32f62e3671e97 --- /dev/null +++ b/xchart-demo/src/main/java/com/xeiam/xchart/demo/charts/scatter/ScatterChart01.java @@ -0,0 +1,67 @@ +/** + * Copyright 2011-2013 Xeiam LLC. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.xeiam.xchart.demo.charts.scatter; + +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + +import com.xeiam.xchart.Chart; +import com.xeiam.xchart.ScatterChart; +import com.xeiam.xchart.SwingWrapper; +import com.xeiam.xchart.demo.charts.line.ExampleChart; + +/** + * Gaussian Blob Scatter Plot + * + * @author timmolter + */ +public class ScatterChart01 implements ExampleChart { + + public static void main(String[] args) { + + ExampleChart exampleChart = new ScatterChart01(); + Chart chart = exampleChart.getChart(); + new SwingWrapper(chart).displayChart(); + } + + @Override + public Chart getChart() { + + // generates sine data + List<Number> xData = new ArrayList<Number>(); + List<Number> yData = new ArrayList<Number>(); + Random random = new Random(); + int size = 1000; + for (int i = 0; i < size; i++) { + xData.add(random.nextGaussian()); + yData.add(random.nextGaussian()); + } + + // Create Chart + Chart chart = new ScatterChart(800, 600); + + // Customize Chart + chart.getStyleManager().setChartTitleVisible(false); + chart.getStyleManager().setLegendVisible(false); + + // Series + chart.addSeries("Gaussian Blob", xData, yData); + + return chart; + } + +} diff --git a/xchart-demo/src/main/java/com/xeiam/xchart/example/Example1.java b/xchart-demo/src/main/java/com/xeiam/xchart/example/Example1.java index 86154f306ce001ff3507d948fdbd1bfbde189a88..e47de08fb811475ef5fe7684f3f14ad0e970569e 100644 --- a/xchart-demo/src/main/java/com/xeiam/xchart/example/Example1.java +++ b/xchart-demo/src/main/java/com/xeiam/xchart/example/Example1.java @@ -17,6 +17,7 @@ package com.xeiam.xchart.example; import com.xeiam.xchart.BitmapEncoder; import com.xeiam.xchart.Chart; +import com.xeiam.xchart.LineChart; /** * Creates a simple Chart and saves it as a PNG and JPEG image file. @@ -30,7 +31,7 @@ public class Example1 { double[] yData = new double[] { 2.0, 1.0, 0.0 }; // Create Chart - Chart chart = new Chart(500, 400); + Chart chart = new LineChart(500, 400); chart.setChartTitle("Sample Chart"); chart.setXAxisTitle("X"); chart.setYAxisTitle("Y"); diff --git a/xchart/src/main/java/com/xeiam/xchart/Chart.java b/xchart/src/main/java/com/xeiam/xchart/Chart.java index ef91f01582b9428438ef3a7e7e9a6295a0f12621..bfd2652dea00baaa11d40e33f04a74ec5571eb27 100644 --- a/xchart/src/main/java/com/xeiam/xchart/Chart.java +++ b/xchart/src/main/java/com/xeiam/xchart/Chart.java @@ -35,7 +35,7 @@ import com.xeiam.xchart.style.theme.Theme; * * @author timmolter */ -public class Chart { +public abstract class Chart { public int width; public int height; @@ -73,7 +73,7 @@ public class Chart { setChartTitle(chartBuilder.title); setXAxisTitle(chartBuilder.xAxisTitle); setYAxisTitle(chartBuilder.yAxisTitle); - styleManager.setLegendVisible(chartBuilder.isLegendVisible); + setTheme(chartBuilder.theme); } /** diff --git a/xchart/src/main/java/com/xeiam/xchart/ChartBuilder.java b/xchart/src/main/java/com/xeiam/xchart/ChartBuilder.java index c582ce9c3863e74c44805d55760a8aded2e10dca..489fc6741f9838f97755aad7f1c1dbe51768e322 100644 --- a/xchart/src/main/java/com/xeiam/xchart/ChartBuilder.java +++ b/xchart/src/main/java/com/xeiam/xchart/ChartBuilder.java @@ -21,17 +21,32 @@ */ package com.xeiam.xchart; +import com.xeiam.xchart.style.theme.Theme; +import com.xeiam.xchart.style.theme.XChartTheme; + /** * @author timmolter */ public class ChartBuilder { + public enum ChartType { + + Line, Scatter + } + + protected ChartType chartType = ChartType.Line; protected int width = 800; protected int height = 600; protected String title = ""; protected String xAxisTitle = ""; protected String yAxisTitle = ""; - protected boolean isLegendVisible = true; + protected Theme theme = new XChartTheme(); + + public ChartBuilder chartType(ChartType chartType) { + + this.chartType = chartType; + return this; + } public ChartBuilder width(int width) { @@ -63,9 +78,9 @@ public class ChartBuilder { return this; } - public ChartBuilder showLegend(boolean isLegendVisible) { + public ChartBuilder theme(Theme theme) { - this.isLegendVisible = isLegendVisible; + this.theme = theme; return this; } @@ -76,7 +91,15 @@ public class ChartBuilder { */ public Chart build() { - return new Chart(this); + switch (chartType) { + case Line: + return new LineChart(this); + case Scatter: + return new ScatterChart(this); + default: + return new LineChart(this); + } + } } diff --git a/xchart/src/main/java/com/xeiam/xchart/LineChart.java b/xchart/src/main/java/com/xeiam/xchart/LineChart.java new file mode 100644 index 0000000000000000000000000000000000000000..e79df9bf4fc730478cfdb042e42bb400d09d411a --- /dev/null +++ b/xchart/src/main/java/com/xeiam/xchart/LineChart.java @@ -0,0 +1,52 @@ +/** + * Copyright (C) 2013 Xeiam LLC http://xeiam.com + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is furnished to do + * so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package com.xeiam.xchart; + +/** + * A Scatter Chart is a contains series with no lines drawn between the points + * + * @author timmolter + */ +public class LineChart extends Chart { + + /** + * Constructor + * + * @param width + * @param height + */ + public LineChart(int width, int height) { + + super(width, height); + + } + + /** + * Constructor + * + * @param chartBuilder + */ + public LineChart(ChartBuilder chartBuilder) { + + super(chartBuilder); + } +} diff --git a/xchart/src/main/java/com/xeiam/xchart/QuickChart.java b/xchart/src/main/java/com/xeiam/xchart/QuickChart.java index 2d4249b0b29576b3fbef74b03351ae40b56b0013..a242e338cba84d107c210cae97f2ba68c9d11cd6 100644 --- a/xchart/src/main/java/com/xeiam/xchart/QuickChart.java +++ b/xchart/src/main/java/com/xeiam/xchart/QuickChart.java @@ -72,7 +72,7 @@ public final class QuickChart { public static Chart getChart(String chartTitle, String xTitle, String yTitle, String[] seriesNames, double[] xData, double[][] yData) { // Create Chart - Chart chart = new Chart(WIDTH, HEIGHT); + Chart chart = new LineChart(WIDTH, HEIGHT); // Customize Chart chart.setChartTitle(chartTitle); @@ -108,7 +108,7 @@ public final class QuickChart { public static Chart getChart(String chartTitle, String xTitle, String yTitle, String seriesName, Collection<Number> xData, Collection<Number> yData) { // Create Chart - Chart chart = new Chart(WIDTH, HEIGHT); + Chart chart = new LineChart(WIDTH, HEIGHT); // Customize Chart chart.setChartTitle(chartTitle); diff --git a/xchart/src/main/java/com/xeiam/xchart/ScatterChart.java b/xchart/src/main/java/com/xeiam/xchart/ScatterChart.java new file mode 100644 index 0000000000000000000000000000000000000000..fe1fe13b26ad97d413f0b579084abb184677fb3d --- /dev/null +++ b/xchart/src/main/java/com/xeiam/xchart/ScatterChart.java @@ -0,0 +1,52 @@ +/** + * Copyright (C) 2013 Xeiam LLC http://xeiam.com + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is furnished to do + * so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +package com.xeiam.xchart; + +/** + * A Scatter Chart is a contains series with no lines drawn between the points + * + * @author timmolter + */ +public class ScatterChart extends Chart { + + /** + * Constructor + * + * @param width + * @param height + */ + public ScatterChart(int width, int height) { + + super(width, height); + + } + + /** + * Constructor + * + * @param chartBuilder + */ + public ScatterChart(ChartBuilder chartBuilder) { + + super(chartBuilder); + } +} diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisPair.java b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisPair.java index 3fa995c66cbc779651d1a68889f4ccde59112657..b01b0322372e9295fd3bb2a4328383851e5f5a9c 100644 --- a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisPair.java +++ b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/AxisPair.java @@ -26,8 +26,8 @@ import java.util.Map; import com.xeiam.xchart.Chart; import com.xeiam.xchart.internal.chartpart.Axis.AxisType; -import com.xeiam.xchart.internal.misc.SeriesColorMarkerLineStyleCycler; import com.xeiam.xchart.style.Series; +import com.xeiam.xchart.style.SeriesColorMarkerLineStyleCycler; /** * @author timmolter diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/PlotContent.java b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/PlotContent.java index aab9241bc2bcb000d42101bb5dfa93317766d0bb..c99519219988051ac6ad29b67fb58a71be938069 100644 --- a/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/PlotContent.java +++ b/xchart/src/main/java/com/xeiam/xchart/internal/chartpart/PlotContent.java @@ -26,6 +26,7 @@ import java.util.Iterator; import java.util.Map; import com.xeiam.xchart.Chart; +import com.xeiam.xchart.ScatterChart; import com.xeiam.xchart.internal.chartpart.Axis.AxisType; import com.xeiam.xchart.style.Series; @@ -58,6 +59,8 @@ public class PlotContent implements ChartPart { @Override public void paint(Graphics2D g) { + boolean isScatterChart = getChart() instanceof ScatterChart; + Rectangle bounds = plot.getBounds(); Map<Integer, Series> seriesMap = getChart().getAxisPair().getSeriesMap(); @@ -130,7 +133,7 @@ public class PlotContent implements ChartPart { // System.out.println(yTransform); // paint line - if (series.stroke != null) { + if (series.stroke != null && !isScatterChart) { if (previousX != Integer.MIN_VALUE && previousY != Integer.MIN_VALUE) { g.setColor(series.strokeColor); g.setStroke(series.stroke); diff --git a/xchart/src/main/java/com/xeiam/xchart/style/Series.java b/xchart/src/main/java/com/xeiam/xchart/style/Series.java index a9da1851de952d3d1e18a367bcfb04093bec2742..030f099a494372cd0d39d225ed5c9a9d4280c9ef 100644 --- a/xchart/src/main/java/com/xeiam/xchart/style/Series.java +++ b/xchart/src/main/java/com/xeiam/xchart/style/Series.java @@ -24,7 +24,6 @@ import java.util.Iterator; import com.xeiam.xchart.internal.chartpart.Axis.AxisType; import com.xeiam.xchart.internal.markers.Marker; -import com.xeiam.xchart.internal.misc.SeriesColorMarkerLineStyle; /** * A Series containing X and Y data to be plotted on a Chart diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/misc/SeriesColorMarkerLineStyle.java b/xchart/src/main/java/com/xeiam/xchart/style/SeriesColorMarkerLineStyle.java similarity index 97% rename from xchart/src/main/java/com/xeiam/xchart/internal/misc/SeriesColorMarkerLineStyle.java rename to xchart/src/main/java/com/xeiam/xchart/style/SeriesColorMarkerLineStyle.java index d9e19b70388ebbcded795b9ea292fe71a68dd278..1e4806e82e7f1956a026618badb4638d80aa2581 100644 --- a/xchart/src/main/java/com/xeiam/xchart/internal/misc/SeriesColorMarkerLineStyle.java +++ b/xchart/src/main/java/com/xeiam/xchart/style/SeriesColorMarkerLineStyle.java @@ -19,7 +19,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -package com.xeiam.xchart.internal.misc; +package com.xeiam.xchart.style; import java.awt.BasicStroke; import java.awt.Color; diff --git a/xchart/src/main/java/com/xeiam/xchart/internal/misc/SeriesColorMarkerLineStyleCycler.java b/xchart/src/main/java/com/xeiam/xchart/style/SeriesColorMarkerLineStyleCycler.java similarity index 95% rename from xchart/src/main/java/com/xeiam/xchart/internal/misc/SeriesColorMarkerLineStyleCycler.java rename to xchart/src/main/java/com/xeiam/xchart/style/SeriesColorMarkerLineStyleCycler.java index 92d7cf05c778c3f9cf90e4ad0b819dd8e6dfdbb2..974cde0c24b0bb47c0405786717d705e1f82bfb2 100644 --- a/xchart/src/main/java/com/xeiam/xchart/internal/misc/SeriesColorMarkerLineStyleCycler.java +++ b/xchart/src/main/java/com/xeiam/xchart/style/SeriesColorMarkerLineStyleCycler.java @@ -19,15 +19,12 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -package com.xeiam.xchart.internal.misc; +package com.xeiam.xchart.style; import java.util.EnumSet; import java.util.HashMap; import java.util.Map; -import com.xeiam.xchart.style.SeriesColor; -import com.xeiam.xchart.style.SeriesLineStyle; -import com.xeiam.xchart.style.SeriesMarker; /** * Cycles through the different colors, markers, and strokes in a predetermined way