Skip to content
Snippets Groups Projects
Commit 55eff0da authored by Tim Molter's avatar Tim Molter
Browse files

Issue #115 - Add series colors and markers to themes

parent d49d2321
Branches
No related tags found
No related merge requests found
Showing
with 306 additions and 130 deletions
...@@ -241,7 +241,7 @@ public class XChartDemo extends JPanel implements TreeSelectionListener { ...@@ -241,7 +241,7 @@ public class XChartDemo extends JPanel implements TreeSelectionListener {
defaultMutableTreeNode = new DefaultMutableTreeNode(new ChartInfo("LineChart06 - Logarithmic Y-Axis with Error Bars", new LineChart06().getChart())); defaultMutableTreeNode = new DefaultMutableTreeNode(new ChartInfo("LineChart06 - Logarithmic Y-Axis with Error Bars", new LineChart06().getChart()));
category.add(defaultMutableTreeNode); category.add(defaultMutableTreeNode);
defaultMutableTreeNode = new DefaultMutableTreeNode(new ChartInfo("LineChart07 - Line chart with multiple Category Series", new LineChart07().getChart())); defaultMutableTreeNode = new DefaultMutableTreeNode(new ChartInfo("LineChart07 - Line Chart with Multiple Category Series", new LineChart07().getChart()));
category.add(defaultMutableTreeNode); category.add(defaultMutableTreeNode);
// Scatter category // Scatter category
......
...@@ -27,11 +27,11 @@ import java.util.Random; ...@@ -27,11 +27,11 @@ import java.util.Random;
import org.knowm.xchart.Chart; import org.knowm.xchart.Chart;
import org.knowm.xchart.ChartBuilder; import org.knowm.xchart.ChartBuilder;
import org.knowm.xchart.Series; import org.knowm.xchart.Series;
import org.knowm.xchart.SeriesColor;
import org.knowm.xchart.StyleManager.ChartTheme; import org.knowm.xchart.StyleManager.ChartTheme;
import org.knowm.xchart.StyleManager.ChartType; import org.knowm.xchart.StyleManager.ChartType;
import org.knowm.xchart.SwingWrapper; import org.knowm.xchart.SwingWrapper;
import org.knowm.xchart.demo.charts.ExampleChart; import org.knowm.xchart.demo.charts.ExampleChart;
import org.knowm.xchart.internal.style.MatlabTheme;
/** /**
* Date Categories * Date Categories
...@@ -76,7 +76,7 @@ public class BarChart02 implements ExampleChart { ...@@ -76,7 +76,7 @@ public class BarChart02 implements ExampleChart {
yData.add(-1 * 0.00000001 * ((random.nextInt(i) + 1))); yData.add(-1 * 0.00000001 * ((random.nextInt(i) + 1)));
} }
Series series = chart.addCategorySeries("Model 77", xData, yData); Series series = chart.addCategorySeries("Model 77", xData, yData);
series.setLineColor(SeriesColor.RED); series.setLineColor(MatlabTheme.RED);
chart.getStyleManager().setPlotGridLinesVisible(false); chart.getStyleManager().setPlotGridLinesVisible(false);
chart.getStyleManager().setBarFilled(false); chart.getStyleManager().setBarFilled(false);
chart.getStyleManager().setDatePattern("YYYY"); chart.getStyleManager().setDatePattern("YYYY");
......
...@@ -21,11 +21,11 @@ import java.util.List; ...@@ -21,11 +21,11 @@ import java.util.List;
import org.knowm.xchart.Chart; import org.knowm.xchart.Chart;
import org.knowm.xchart.Series; import org.knowm.xchart.Series;
import org.knowm.xchart.SeriesColor;
import org.knowm.xchart.SeriesLineStyle; import org.knowm.xchart.SeriesLineStyle;
import org.knowm.xchart.SeriesMarker; import org.knowm.xchart.SeriesMarker;
import org.knowm.xchart.SwingWrapper; import org.knowm.xchart.SwingWrapper;
import org.knowm.xchart.demo.charts.ExampleChart; import org.knowm.xchart.demo.charts.ExampleChart;
import org.knowm.xchart.internal.style.XChartTheme;
/** /**
* Sine wave with customized series style * Sine wave with customized series style
...@@ -65,9 +65,9 @@ public class LineChart02 implements ExampleChart { ...@@ -65,9 +65,9 @@ public class LineChart02 implements ExampleChart {
// Series 1 // Series 1
Series series1 = chart.addSeries("y=sin(x)", xData, yData); Series series1 = chart.addSeries("y=sin(x)", xData, yData);
series1.setLineColor(SeriesColor.PURPLE); series1.setLineColor(XChartTheme.PURPLE);
series1.setLineStyle(SeriesLineStyle.DASH_DASH); series1.setLineStyle(SeriesLineStyle.DASH_DASH);
series1.setMarkerColor(SeriesColor.GREEN); series1.setMarkerColor(XChartTheme.GREEN);
series1.setMarker(SeriesMarker.SQUARE); series1.setMarker(SeriesMarker.SQUARE);
return chart; return chart;
......
...@@ -29,12 +29,12 @@ import java.util.Locale; ...@@ -29,12 +29,12 @@ import java.util.Locale;
import org.knowm.xchart.Chart; import org.knowm.xchart.Chart;
import org.knowm.xchart.ChartColor; import org.knowm.xchart.ChartColor;
import org.knowm.xchart.Series; import org.knowm.xchart.Series;
import org.knowm.xchart.SeriesColor;
import org.knowm.xchart.SeriesLineStyle; import org.knowm.xchart.SeriesLineStyle;
import org.knowm.xchart.SeriesMarker; import org.knowm.xchart.SeriesMarker;
import org.knowm.xchart.StyleManager.LegendPosition; import org.knowm.xchart.StyleManager.LegendPosition;
import org.knowm.xchart.SwingWrapper; import org.knowm.xchart.SwingWrapper;
import org.knowm.xchart.demo.charts.ExampleChart; import org.knowm.xchart.demo.charts.ExampleChart;
import org.knowm.xchart.internal.style.XChartTheme;
/** /**
* Extensive Chart Customization * Extensive Chart Customization
...@@ -102,7 +102,7 @@ public class LineChart03 implements ExampleChart { ...@@ -102,7 +102,7 @@ public class LineChart03 implements ExampleChart {
chart.getStyleManager().setLocale(Locale.GERMAN); chart.getStyleManager().setLocale(Locale.GERMAN);
Series series = chart.addSeries("Fake Data", xData, yData); Series series = chart.addSeries("Fake Data", xData, yData);
series.setLineColor(SeriesColor.BLUE); series.setLineColor(XChartTheme.BLUE);
series.setMarkerColor(Color.ORANGE); series.setMarkerColor(Color.ORANGE);
series.setMarker(SeriesMarker.CIRCLE); series.setMarker(SeriesMarker.CIRCLE);
series.setLineStyle(SeriesLineStyle.SOLID); series.setLineStyle(SeriesLineStyle.SOLID);
......
...@@ -18,11 +18,11 @@ package org.knowm.xchart.demo.charts.line; ...@@ -18,11 +18,11 @@ package org.knowm.xchart.demo.charts.line;
import org.knowm.xchart.Chart; import org.knowm.xchart.Chart;
import org.knowm.xchart.Series; import org.knowm.xchart.Series;
import org.knowm.xchart.SeriesColor;
import org.knowm.xchart.SeriesLineStyle; import org.knowm.xchart.SeriesLineStyle;
import org.knowm.xchart.SeriesMarker; import org.knowm.xchart.SeriesMarker;
import org.knowm.xchart.SwingWrapper; import org.knowm.xchart.SwingWrapper;
import org.knowm.xchart.demo.charts.ExampleChart; import org.knowm.xchart.demo.charts.ExampleChart;
import org.knowm.xchart.internal.style.XChartTheme;
/** /**
* Hundreds of Series on One Plot * Hundreds of Series on One Plot
...@@ -50,10 +50,10 @@ public class LineChart04 implements ExampleChart { ...@@ -50,10 +50,10 @@ public class LineChart04 implements ExampleChart {
for (int i = 0; i < 200; i++) { for (int i = 0; i < 200; i++) {
Series series = chart.addSeries("A" + i, new double[] { Math.random() / 1000, Math.random() / 1000 }, new double[] { Math.random() / -1000, Math.random() / -1000 }); Series series = chart.addSeries("A" + i, new double[] { Math.random() / 1000, Math.random() / 1000 }, new double[] { Math.random() / -1000, Math.random() / -1000 });
series.setLineColor(SeriesColor.BLUE); series.setLineColor(XChartTheme.BLUE);
series.setLineStyle(SeriesLineStyle.SOLID); series.setLineStyle(SeriesLineStyle.SOLID);
series.setMarker(SeriesMarker.CIRCLE); series.setMarker(SeriesMarker.CIRCLE);
series.setMarkerColor(SeriesColor.BLUE); series.setMarkerColor(XChartTheme.BLUE);
} }
......
...@@ -25,8 +25,6 @@ import java.util.List; ...@@ -25,8 +25,6 @@ import java.util.List;
import org.knowm.xchart.Chart; import org.knowm.xchart.Chart;
import org.knowm.xchart.ChartBuilder; import org.knowm.xchart.ChartBuilder;
import org.knowm.xchart.Series;
import org.knowm.xchart.SeriesLineStyle;
import org.knowm.xchart.StyleManager.ChartTheme; import org.knowm.xchart.StyleManager.ChartTheme;
import org.knowm.xchart.SwingWrapper; import org.knowm.xchart.SwingWrapper;
import org.knowm.xchart.demo.charts.ExampleChart; import org.knowm.xchart.demo.charts.ExampleChart;
...@@ -104,8 +102,7 @@ public class ThemeChart03 implements ExampleChart { ...@@ -104,8 +102,7 @@ public class ThemeChart03 implements ExampleChart {
e.printStackTrace(); e.printStackTrace();
} }
Series series1 = chart.addSeries("downloads", xData, y1Data); chart.addSeries("downloads", xData, y1Data);
series1.setLineStyle(SeriesLineStyle.DOT_DOT);
chart.addSeries("price", xData, y2Data); chart.addSeries("price", xData, y2Data);
return chart; return chart;
......
...@@ -20,10 +20,10 @@ import java.awt.Color; ...@@ -20,10 +20,10 @@ import java.awt.Color;
import org.knowm.xchart.Chart; import org.knowm.xchart.Chart;
import org.knowm.xchart.Series; import org.knowm.xchart.Series;
import org.knowm.xchart.SeriesColor;
import org.knowm.xchart.SeriesLineStyle; import org.knowm.xchart.SeriesLineStyle;
import org.knowm.xchart.SeriesMarker; import org.knowm.xchart.SeriesMarker;
import org.knowm.xchart.SwingWrapper; import org.knowm.xchart.SwingWrapper;
import org.knowm.xchart.internal.style.XChartTheme;
/** /**
* @author timmolter * @author timmolter
...@@ -70,13 +70,13 @@ public class ErrorBarLogTest { ...@@ -70,13 +70,13 @@ public class ErrorBarLogTest {
series2.setMarker(SeriesMarker.NONE); series2.setMarker(SeriesMarker.NONE);
series2.setLineColor(SeriesColor.RED); series2.setLineColor(XChartTheme.RED);
series3.setLineStyle(SeriesLineStyle.DASH_DASH); series3.setLineStyle(SeriesLineStyle.DASH_DASH);
series3.setMarker(SeriesMarker.NONE); series3.setMarker(SeriesMarker.NONE);
series3.setLineColor(SeriesColor.RED); series3.setLineColor(XChartTheme.RED);
new SwingWrapper(mychart).displayChart(); new SwingWrapper(mychart).displayChart();
......
...@@ -20,10 +20,10 @@ import java.awt.Color; ...@@ -20,10 +20,10 @@ import java.awt.Color;
import org.knowm.xchart.Chart; import org.knowm.xchart.Chart;
import org.knowm.xchart.Series; import org.knowm.xchart.Series;
import org.knowm.xchart.SeriesColor;
import org.knowm.xchart.SeriesLineStyle; import org.knowm.xchart.SeriesLineStyle;
import org.knowm.xchart.SeriesMarker; import org.knowm.xchart.SeriesMarker;
import org.knowm.xchart.SwingWrapper; import org.knowm.xchart.SwingWrapper;
import org.knowm.xchart.internal.style.XChartTheme;
/** /**
* @author timmolter * @author timmolter
...@@ -51,10 +51,10 @@ public class ErrorBarTest { ...@@ -51,10 +51,10 @@ public class ErrorBarTest {
series1.setMarkerColor(Color.MAGENTA); series1.setMarkerColor(Color.MAGENTA);
series2.setLineStyle(SeriesLineStyle.DASH_DASH); series2.setLineStyle(SeriesLineStyle.DASH_DASH);
series2.setMarker(SeriesMarker.NONE); series2.setMarker(SeriesMarker.NONE);
series2.setLineColor(SeriesColor.RED); series2.setLineColor(XChartTheme.RED);
series3.setLineStyle(SeriesLineStyle.DASH_DASH); series3.setLineStyle(SeriesLineStyle.DASH_DASH);
series3.setMarker(SeriesMarker.NONE); series3.setMarker(SeriesMarker.NONE);
series3.setLineColor(SeriesColor.RED); series3.setLineColor(XChartTheme.RED);
new SwingWrapper(mychart).displayChart(); new SwingWrapper(mychart).displayChart();
} }
......
...@@ -20,78 +20,37 @@ import java.awt.Color; ...@@ -20,78 +20,37 @@ import java.awt.Color;
/** /**
* Pre-defined Colors used for Series Lines and Markers * Pre-defined Colors used for Series Lines and Markers
* *
* @author timmolter * @author timmolter
*/ */
public enum SeriesColor { public class SeriesColor {
/** BLUE */
BLUE(0, new Color(0, 55, 255, 180)),
/** ORANGE */
ORANGE(1, new Color(255, 172, 0, 180)),
/** PURPLE */
PURPLE(2, new Color(128, 0, 255, 180)),
/** GREEN */
GREEN(3, new Color(0, 205, 0, 180)),
/** RED */
RED(4, new Color(205, 0, 0, 180)),
/** YELLOW */
YELLOW(5, new Color(255, 215, 0, 180)),
/** MAGENTA */
MAGENTA(6, new Color(255, 0, 255, 180)),
/** PINK */
PINK(7, new Color(255, 166, 201, 180)),
/** LIGHT_GREY */
LIGHT_GREY(8, new Color(207, 207, 207, 180)),
/** CYAN */
CYAN(9, new Color(0, 255, 255, 180)),
/** BROWN */
BROWN(10, new Color(102, 56, 10, 180)),
/** BLACK */
BLACK(11, new Color(0, 0, 0, 180));
/** The index */
private int index;
/** The AWT Color */ /** The AWT Color */
private Color color; private Color color;
/** /**
* Constructor * Constructor
* *
* @param index
* @param color * @param color
*/ */
private SeriesColor(int index, Color color) { public SeriesColor(Color color) {
this.index = index;
this.color = color; this.color = color;
} }
/** /**
* Gets the SeriesColor's index * Constructor
* *
* @return * @param color
*/ */
public Integer getIndex() { public SeriesColor(int r, int g, int b, int a) {
return index; this.color = new Color(r, g, b, a);
} }
/** /**
* Gets the SeriesColor's AWT Color * Gets the SeriesColor's AWT Color
* *
* @return the AWT Color * @return the AWT Color
*/ */
public Color getColor() { public Color getColor() {
...@@ -99,15 +58,15 @@ public enum SeriesColor { ...@@ -99,15 +58,15 @@ public enum SeriesColor {
return color; return color;
} }
/** // /**
* get the AWT Color given a SeriesColor // * get the AWT Color given a SeriesColor
* // *
* @param seriesColor // * @param seriesColor
* @return the AWT Color // * @return the AWT Color
*/ // */
public Color getAWTColor(SeriesColor seriesColor) { // public Color getAWTColor(SeriesColor seriesColor) {
//
return seriesColor.color; // return seriesColor.color;
} // }
} }
...@@ -24,6 +24,7 @@ import java.util.TimeZone; ...@@ -24,6 +24,7 @@ import java.util.TimeZone;
import org.knowm.xchart.internal.style.GGPlot2Theme; import org.knowm.xchart.internal.style.GGPlot2Theme;
import org.knowm.xchart.internal.style.MatlabTheme; import org.knowm.xchart.internal.style.MatlabTheme;
import org.knowm.xchart.internal.style.SeriesColorMarkerLineStyleCycler;
import org.knowm.xchart.internal.style.Theme; import org.knowm.xchart.internal.style.Theme;
import org.knowm.xchart.internal.style.XChartTheme; import org.knowm.xchart.internal.style.XChartTheme;
...@@ -76,6 +77,7 @@ public class StyleManager { ...@@ -76,6 +77,7 @@ public class StyleManager {
private Color chartBackgroundColor; private Color chartBackgroundColor;
public Color chartFontColor; public Color chartFontColor;
private int chartPadding; private int chartPadding;
private SeriesColorMarkerLineStyleCycler seriesColorMarkerLineStyleCycler;
// Chart Title /////////////////////////////// // Chart Title ///////////////////////////////
private Font chartTitleFont; private Font chartTitleFont;
...@@ -168,6 +170,7 @@ public class StyleManager { ...@@ -168,6 +170,7 @@ public class StyleManager {
chartBackgroundColor = theme.getChartBackgroundColor(); chartBackgroundColor = theme.getChartBackgroundColor();
chartFontColor = theme.getChartFontColor(); chartFontColor = theme.getChartFontColor();
chartPadding = theme.getChartPadding(); chartPadding = theme.getChartPadding();
seriesColorMarkerLineStyleCycler = theme.getSeriesColorMarkerLineStyleCycler();
// Chart Title /////////////////////////////// // Chart Title ///////////////////////////////
chartTitleFont = theme.getChartTitleFont(); chartTitleFont = theme.getChartTitleFont();
...@@ -322,6 +325,16 @@ public class StyleManager { ...@@ -322,6 +325,16 @@ public class StyleManager {
return chartPadding; return chartPadding;
} }
public SeriesColorMarkerLineStyleCycler getSeriesColorMarkerLineStyleCycler() {
return seriesColorMarkerLineStyleCycler;
}
public void setSeriesColorMarkerLineStyleCycler(SeriesColorMarkerLineStyleCycler seriesColorMarkerLineStyleCycler) {
this.seriesColorMarkerLineStyleCycler = seriesColorMarkerLineStyleCycler;
}
// Chart Title /////////////////////////////// // Chart Title ///////////////////////////////
/** /**
......
...@@ -30,7 +30,6 @@ import java.util.Map; ...@@ -30,7 +30,6 @@ import java.util.Map;
import org.knowm.xchart.Series; import org.knowm.xchart.Series;
import org.knowm.xchart.StyleManager; import org.knowm.xchart.StyleManager;
import org.knowm.xchart.internal.chartpart.Axis.AxisType; import org.knowm.xchart.internal.chartpart.Axis.AxisType;
import org.knowm.xchart.internal.style.SeriesColorMarkerLineStyleCycler;
/** /**
* @author timmolter * @author timmolter
...@@ -48,7 +47,6 @@ public class ChartInternal { ...@@ -48,7 +47,6 @@ public class ChartInternal {
private ChartInternalType chartInternalType = null; private ChartInternalType chartInternalType = null;
private Map<String, Series> seriesMap = new LinkedHashMap<String, Series>(); private Map<String, Series> seriesMap = new LinkedHashMap<String, Series>();
private SeriesColorMarkerLineStyleCycler seriesColorMarkerLineStyleCycler = new SeriesColorMarkerLineStyleCycler();
private final StyleManager styleManager; private final StyleManager styleManager;
...@@ -109,7 +107,7 @@ public class ChartInternal { ...@@ -109,7 +107,7 @@ public class ChartInternal {
} }
axisPair.getYAxis().setAxisType(AxisType.Number); axisPair.getYAxis().setAxisType(AxisType.Number);
series = new Series(seriesName, xData, axisPair.getXAxis().getAxisType(), yData, axisPair.getYAxis().getAxisType(), errorBars, seriesColorMarkerLineStyleCycler series = new Series(seriesName, xData, axisPair.getXAxis().getAxisType(), yData, axisPair.getYAxis().getAxisType(), errorBars, styleManager.getSeriesColorMarkerLineStyleCycler()
.getNextSeriesColorMarkerLineStyle()); .getNextSeriesColorMarkerLineStyle());
} }
else { // generate xData else { // generate xData
...@@ -119,7 +117,7 @@ public class ChartInternal { ...@@ -119,7 +117,7 @@ public class ChartInternal {
} }
axisPair.getXAxis().setAxisType(AxisType.Number); axisPair.getXAxis().setAxisType(AxisType.Number);
axisPair.getYAxis().setAxisType(AxisType.Number); axisPair.getYAxis().setAxisType(AxisType.Number);
series = new Series(seriesName, generatedXData, axisPair.getXAxis().getAxisType(), yData, axisPair.getYAxis().getAxisType(), errorBars, seriesColorMarkerLineStyleCycler series = new Series(seriesName, generatedXData, axisPair.getXAxis().getAxisType(), yData, axisPair.getYAxis().getAxisType(), errorBars, styleManager.getSeriesColorMarkerLineStyleCycler()
.getNextSeriesColorMarkerLineStyle()); .getNextSeriesColorMarkerLineStyle());
} }
...@@ -169,7 +167,7 @@ public class ChartInternal { ...@@ -169,7 +167,7 @@ public class ChartInternal {
setXAxisType(xData); setXAxisType(xData);
axisPair.getYAxis().setAxisType(AxisType.Number); axisPair.getYAxis().setAxisType(AxisType.Number);
Series series = new Series(seriesName, xData, axisPair.getXAxis().getAxisType(), yData, axisPair.getYAxis().getAxisType(), errorBars, seriesColorMarkerLineStyleCycler Series series = new Series(seriesName, xData, axisPair.getXAxis().getAxisType(), yData, axisPair.getYAxis().getAxisType(), errorBars, styleManager.getSeriesColorMarkerLineStyleCycler()
.getNextSeriesColorMarkerLineStyle()); .getNextSeriesColorMarkerLineStyle());
// set series type // set series type
......
...@@ -20,8 +20,13 @@ import java.awt.BasicStroke; ...@@ -20,8 +20,13 @@ import java.awt.BasicStroke;
import java.awt.Color; import java.awt.Color;
import java.awt.Font; import java.awt.Font;
import java.awt.Stroke; import java.awt.Stroke;
import java.util.ArrayList;
import java.util.List;
import org.knowm.xchart.ChartColor; import org.knowm.xchart.ChartColor;
import org.knowm.xchart.SeriesColor;
import org.knowm.xchart.SeriesLineStyle;
import org.knowm.xchart.SeriesMarker;
import org.knowm.xchart.StyleManager.LegendPosition; import org.knowm.xchart.StyleManager.LegendPosition;
/** /**
...@@ -29,6 +34,16 @@ import org.knowm.xchart.StyleManager.LegendPosition; ...@@ -29,6 +34,16 @@ import org.knowm.xchart.StyleManager.LegendPosition;
*/ */
public class GGPlot2Theme implements Theme { public class GGPlot2Theme implements Theme {
// The color blind friendly palette
public static SeriesColor BLACK = new SeriesColor(0, 0, 0, 255);
public static SeriesColor ORANGE = new SeriesColor(230, 159, 0, 255);
public static SeriesColor SKY_BLUE = new SeriesColor(86, 180, 233, 255);
public static SeriesColor BLUISH_GREEN = new SeriesColor(0, 158, 115, 255);
public static SeriesColor YELLOW = new SeriesColor(240, 228, 66, 255);
public static SeriesColor BLUE = new SeriesColor(0, 114, 178, 255);
public static SeriesColor VERMILLION = new SeriesColor(213, 94, 0, 255);
public static SeriesColor REDDISH_PURPLE = new SeriesColor(204, 121, 167, 255);
// Chart Style /////////////////////////////// // Chart Style ///////////////////////////////
@Override @Override
...@@ -49,6 +64,12 @@ public class GGPlot2Theme implements Theme { ...@@ -49,6 +64,12 @@ public class GGPlot2Theme implements Theme {
return 10; return 10;
} }
@Override
public SeriesColorMarkerLineStyleCycler getSeriesColorMarkerLineStyleCycler() {
return new XChartSeriesColorMarkerLineStyleCycler();
}
// Chart Title /////////////////////////////// // Chart Title ///////////////////////////////
@Override @Override
...@@ -244,20 +265,18 @@ public class GGPlot2Theme implements Theme { ...@@ -244,20 +265,18 @@ public class GGPlot2Theme implements Theme {
return true; return true;
} }
@Override @Override
public boolean isPlotGridVerticalLinesVisible() { public boolean isPlotGridVerticalLinesVisible() {
return true; return true;
} }
@Override @Override
public boolean isPlotGridHorizontalLinesVisible() { public boolean isPlotGridHorizontalLinesVisible() {
return true; return true;
} }
@Override @Override
public Color getPlotBackgroundColor() { public Color getPlotBackgroundColor() {
...@@ -335,4 +354,46 @@ public class GGPlot2Theme implements Theme { ...@@ -335,4 +354,46 @@ public class GGPlot2Theme implements Theme {
return false; return false;
} }
public class XChartSeriesColorMarkerLineStyleCycler extends SeriesColorMarkerLineStyleCycler {
@Override
public List<SeriesColor> getSeriesColorList() {
// 1. Color
List<SeriesColor> seriesColorMap = new ArrayList<SeriesColor>();
seriesColorMap.add(BLACK);
seriesColorMap.add(ORANGE);
seriesColorMap.add(SKY_BLUE);
seriesColorMap.add(BLUISH_GREEN);
seriesColorMap.add(YELLOW);
seriesColorMap.add(BLUE);
seriesColorMap.add(VERMILLION);
seriesColorMap.add(REDDISH_PURPLE);
return seriesColorMap;
}
@Override
public List<SeriesMarker> getSeriesMarkerList() {
// 2. Marker
List<SeriesMarker> seriesMarkerList = new ArrayList<SeriesMarker>();
seriesMarkerList.add(SeriesMarker.CIRCLE);
seriesMarkerList.add(SeriesMarker.DIAMOND);
return seriesMarkerList;
}
@Override
public List<SeriesLineStyle> getLineStyleList() {
// 3. Stroke
List<SeriesLineStyle> seriesLineStyleList = new ArrayList<SeriesLineStyle>();
seriesLineStyleList.add(SeriesLineStyle.SOLID);
seriesLineStyleList.add(SeriesLineStyle.DOT_DOT);
seriesLineStyleList.add(SeriesLineStyle.DASH_DASH);
return seriesLineStyleList;
}
}
} }
...@@ -20,8 +20,13 @@ import java.awt.BasicStroke; ...@@ -20,8 +20,13 @@ import java.awt.BasicStroke;
import java.awt.Color; import java.awt.Color;
import java.awt.Font; import java.awt.Font;
import java.awt.Stroke; import java.awt.Stroke;
import java.util.ArrayList;
import java.util.List;
import org.knowm.xchart.ChartColor; import org.knowm.xchart.ChartColor;
import org.knowm.xchart.SeriesColor;
import org.knowm.xchart.SeriesLineStyle;
import org.knowm.xchart.SeriesMarker;
import org.knowm.xchart.StyleManager.LegendPosition; import org.knowm.xchart.StyleManager.LegendPosition;
/** /**
...@@ -29,6 +34,14 @@ import org.knowm.xchart.StyleManager.LegendPosition; ...@@ -29,6 +34,14 @@ import org.knowm.xchart.StyleManager.LegendPosition;
*/ */
public class MatlabTheme implements Theme { public class MatlabTheme implements Theme {
public static SeriesColor BLUE = new SeriesColor(0, 0, 255, 255);
public static SeriesColor GREEN = new SeriesColor(0, 128, 0, 255);
public static SeriesColor RED = new SeriesColor(255, 0, 0, 255);
public static SeriesColor TURQUOISE = new SeriesColor(0, 191, 191, 255);
public static SeriesColor MAGENTA = new SeriesColor(191, 0, 191, 255);
public static SeriesColor YELLOW = new SeriesColor(191, 191, 0, 255);
public static SeriesColor DARK_GREY = new SeriesColor(64, 64, 64, 255);
// Chart Style /////////////////////////////// // Chart Style ///////////////////////////////
@Override @Override
...@@ -49,6 +62,12 @@ public class MatlabTheme implements Theme { ...@@ -49,6 +62,12 @@ public class MatlabTheme implements Theme {
return 10; return 10;
} }
@Override
public SeriesColorMarkerLineStyleCycler getSeriesColorMarkerLineStyleCycler() {
return new MatlabSeriesColorMarkerLineStyleCycler();
}
// Chart Title /////////////////////////////// // Chart Title ///////////////////////////////
@Override @Override
...@@ -249,13 +268,13 @@ public class MatlabTheme implements Theme { ...@@ -249,13 +268,13 @@ public class MatlabTheme implements Theme {
return true; return true;
} }
@Override @Override
public boolean isPlotGridHorizontalLinesVisible() { public boolean isPlotGridHorizontalLinesVisible() {
return true; return true;
} }
@Override @Override
public Color getPlotBackgroundColor() { public Color getPlotBackgroundColor() {
...@@ -334,4 +353,43 @@ public class MatlabTheme implements Theme { ...@@ -334,4 +353,43 @@ public class MatlabTheme implements Theme {
return false; return false;
} }
public class MatlabSeriesColorMarkerLineStyleCycler extends SeriesColorMarkerLineStyleCycler {
@Override
public List<SeriesColor> getSeriesColorList() {
// 1. Color
List<SeriesColor> seriesColorMap = new ArrayList<SeriesColor>();
seriesColorMap.add(BLUE);
seriesColorMap.add(GREEN);
seriesColorMap.add(RED);
seriesColorMap.add(TURQUOISE);
seriesColorMap.add(MAGENTA);
seriesColorMap.add(YELLOW);
seriesColorMap.add(DARK_GREY);
return seriesColorMap;
}
@Override
public List<SeriesMarker> getSeriesMarkerList() {
// 2. Marker
List<SeriesMarker> seriesMarkerList = new ArrayList<SeriesMarker>();
seriesMarkerList.add(SeriesMarker.NONE);
return seriesMarkerList;
}
@Override
public List<SeriesLineStyle> getLineStyleList() {
// 3. Stroke
List<SeriesLineStyle> seriesLineStyleList = new ArrayList<SeriesLineStyle>();
seriesLineStyleList.add(SeriesLineStyle.SOLID);
seriesLineStyleList.add(SeriesLineStyle.DASH_DASH);
seriesLineStyleList.add(SeriesLineStyle.DOT_DOT);
return seriesLineStyleList;
}
}
} }
...@@ -16,9 +16,7 @@ ...@@ -16,9 +16,7 @@
*/ */
package org.knowm.xchart.internal.style; package org.knowm.xchart.internal.style;
import java.util.EnumSet; import java.util.List;
import java.util.HashMap;
import java.util.Map;
import org.knowm.xchart.SeriesColor; import org.knowm.xchart.SeriesColor;
import org.knowm.xchart.SeriesLineStyle; import org.knowm.xchart.SeriesLineStyle;
...@@ -28,19 +26,25 @@ import org.knowm.xchart.SeriesMarker; ...@@ -28,19 +26,25 @@ import org.knowm.xchart.SeriesMarker;
* Cycles through the different colors, markers, and strokes in a predetermined way * Cycles through the different colors, markers, and strokes in a predetermined way
* <p> * <p>
* This is an internal class that should not be used be clients * This is an internal class that should not be used be clients
* *
* @author timmolter * @author timmolter
*/ */
public class SeriesColorMarkerLineStyleCycler { public abstract class SeriesColorMarkerLineStyleCycler {
public abstract List<SeriesColor> getSeriesColorList();
public abstract List<SeriesMarker> getSeriesMarkerList();
/** a map holding the SeriesColors */ public abstract List<SeriesLineStyle> getLineStyleList();
private final Map<Integer, SeriesColor> seriesColorMap = new HashMap<Integer, SeriesColor>();
/** a List holding the SeriesColors */
private final List<SeriesColor> seriesColorList;
/** a map holding the SeriesMarkers */ /** a map holding the SeriesMarkers */
private final Map<Integer, SeriesMarker> seriesMarkerMap = new HashMap<Integer, SeriesMarker>(); private final List<SeriesMarker> seriesMarkerList;
/** a map holding the SeriesLineStyles */ /** a map holding the SeriesLineStyles */
private final Map<Integer, SeriesLineStyle> seriesLineStyleMap = new HashMap<Integer, SeriesLineStyle>(); private final List<SeriesLineStyle> seriesLineStyleList;
/** an internal counter */ /** an internal counter */
private int colorCounter = 0; private int colorCounter = 0;
...@@ -52,51 +56,36 @@ public class SeriesColorMarkerLineStyleCycler { ...@@ -52,51 +56,36 @@ public class SeriesColorMarkerLineStyleCycler {
*/ */
public SeriesColorMarkerLineStyleCycler() { public SeriesColorMarkerLineStyleCycler() {
// 1. Color seriesColorList = getSeriesColorList();
for (SeriesColor seriesColor : EnumSet.allOf(SeriesColor.class)) { seriesMarkerList = getSeriesMarkerList();
seriesColorMap.put(seriesColor.getIndex(), seriesColor); seriesLineStyleList = getLineStyleList();
}
// 2. Marker
for (SeriesMarker seriesMarker : EnumSet.allOf(SeriesMarker.class)) {
if (seriesMarker.getIndex() >= 0) { // skip SeriesMarker.NONE
seriesMarkerMap.put(seriesMarker.getIndex(), seriesMarker);
}
}
// 3. Stroke
for (SeriesLineStyle seriesLineStyle : EnumSet.allOf(SeriesLineStyle.class)) {
if (seriesLineStyle.getIndex() >= 0) { // skip SeriesLineStyle.NONE
seriesLineStyleMap.put(seriesLineStyle.getIndex(), seriesLineStyle);
}
}
} }
/** /**
* Get the next SeriesColorMarkerLineStyle * Get the next SeriesColorMarkerLineStyle
* *
* @return the next SeriesColorMarkerLineStyle * @return the next SeriesColorMarkerLineStyle
*/ */
public SeriesColorMarkerLineStyle getNextSeriesColorMarkerLineStyle() { public SeriesColorMarkerLineStyle getNextSeriesColorMarkerLineStyle() {
// 1. Color - cycle through colors one by one // 1. Color - cycle through colors one by one
if (colorCounter >= seriesColorMap.size()) { if (colorCounter >= seriesColorList.size()) {
colorCounter = 0; colorCounter = 0;
strokeCounter++; strokeCounter++;
} }
SeriesColor seriesColor = seriesColorMap.get(colorCounter++); SeriesColor seriesColor = seriesColorList.get(colorCounter++);
// 2. Stroke - cycle through strokes one by one but only after a color cycle // 2. Stroke - cycle through strokes one by one but only after a color cycle
if (strokeCounter >= seriesLineStyleMap.size()) { if (strokeCounter >= seriesLineStyleList.size()) {
strokeCounter = 0; strokeCounter = 0;
} }
SeriesLineStyle seriesLineStyle = seriesLineStyleMap.get(strokeCounter); SeriesLineStyle seriesLineStyle = seriesLineStyleList.get(strokeCounter);
// 3. Marker - cycle through markers one by one // 3. Marker - cycle through markers one by one
if (markerCounter >= seriesMarkerMap.size()) { if (markerCounter >= seriesMarkerList.size()) {
markerCounter = 0; markerCounter = 0;
} }
SeriesMarker marker = seriesMarkerMap.get(markerCounter++); SeriesMarker marker = seriesMarkerList.get(markerCounter++);
return new SeriesColorMarkerLineStyle(seriesColor.getColor(), marker.getMarker(), seriesLineStyle.getBasicStroke()); return new SeriesColorMarkerLineStyle(seriesColor.getColor(), marker.getMarker(), seriesLineStyle.getBasicStroke());
} }
......
...@@ -35,6 +35,8 @@ public interface Theme { ...@@ -35,6 +35,8 @@ public interface Theme {
public int getChartPadding(); public int getChartPadding();
public SeriesColorMarkerLineStyleCycler getSeriesColorMarkerLineStyleCycler();
// Chart Title /////////////////////////////// // Chart Title ///////////////////////////////
public Font getChartTitleFont(); public Font getChartTitleFont();
...@@ -104,9 +106,9 @@ public interface Theme { ...@@ -104,9 +106,9 @@ public interface Theme {
// Chart Plot Area /////////////////////////////// // Chart Plot Area ///////////////////////////////
public boolean isPlotGridLinesVisible(); public boolean isPlotGridLinesVisible();
public boolean isPlotGridVerticalLinesVisible(); public boolean isPlotGridVerticalLinesVisible();
public boolean isPlotGridHorizontalLinesVisible(); public boolean isPlotGridHorizontalLinesVisible();
public Color getPlotBackgroundColor(); public Color getPlotBackgroundColor();
......
...@@ -20,8 +20,14 @@ import java.awt.BasicStroke; ...@@ -20,8 +20,14 @@ import java.awt.BasicStroke;
import java.awt.Color; import java.awt.Color;
import java.awt.Font; import java.awt.Font;
import java.awt.Stroke; import java.awt.Stroke;
import java.util.ArrayList;
import java.util.EnumSet;
import java.util.List;
import org.knowm.xchart.ChartColor; import org.knowm.xchart.ChartColor;
import org.knowm.xchart.SeriesColor;
import org.knowm.xchart.SeriesLineStyle;
import org.knowm.xchart.SeriesMarker;
import org.knowm.xchart.StyleManager.LegendPosition; import org.knowm.xchart.StyleManager.LegendPosition;
/** /**
...@@ -29,6 +35,42 @@ import org.knowm.xchart.StyleManager.LegendPosition; ...@@ -29,6 +35,42 @@ import org.knowm.xchart.StyleManager.LegendPosition;
*/ */
public class XChartTheme implements Theme { public class XChartTheme implements Theme {
/** BLUE */
public static SeriesColor BLUE = new SeriesColor(0, 55, 255, 180);
/** ORANGE */
public static SeriesColor ORANGE = new SeriesColor(255, 172, 0, 180);
/** PURPLE */
public static SeriesColor PURPLE = new SeriesColor(128, 0, 255, 180);
/** GREEN */
public static SeriesColor GREEN = new SeriesColor(0, 205, 0, 180);
/** RED */
public static SeriesColor RED = new SeriesColor(205, 0, 0, 180);
/** YELLOW */
public static SeriesColor YELLOW = new SeriesColor(255, 215, 0, 180);
/** MAGENTA */
public static SeriesColor MAGENTA = new SeriesColor(255, 0, 255, 180);
/** PINK */
public static SeriesColor PINK = new SeriesColor(255, 166, 201, 180);
/** LIGHT_GREY */
public static SeriesColor LIGHT_GREY = new SeriesColor(207, 207, 207, 180);
/** CYAN */
public static SeriesColor CYAN = new SeriesColor(0, 255, 255, 180);
/** BROWN */
public static SeriesColor BROWN = new SeriesColor(102, 56, 10, 180);
/** BLACK */
public static SeriesColor BLACK = new SeriesColor(0, 0, 0, 180);
// Chart Style /////////////////////////////// // Chart Style ///////////////////////////////
@Override @Override
...@@ -49,6 +91,12 @@ public class XChartTheme implements Theme { ...@@ -49,6 +91,12 @@ public class XChartTheme implements Theme {
return 10; return 10;
} }
@Override
public SeriesColorMarkerLineStyleCycler getSeriesColorMarkerLineStyleCycler() {
return new XChartSeriesColorMarkerLineStyleCycler();
}
// Chart Title /////////////////////////////// // Chart Title ///////////////////////////////
@Override @Override
...@@ -249,13 +297,13 @@ public class XChartTheme implements Theme { ...@@ -249,13 +297,13 @@ public class XChartTheme implements Theme {
return true; return true;
} }
@Override @Override
public boolean isPlotGridHorizontalLinesVisible() { public boolean isPlotGridHorizontalLinesVisible() {
return true; return true;
} }
@Override @Override
public Color getPlotBackgroundColor() { public Color getPlotBackgroundColor() {
...@@ -334,4 +382,55 @@ public class XChartTheme implements Theme { ...@@ -334,4 +382,55 @@ public class XChartTheme implements Theme {
return false; return false;
} }
public class XChartSeriesColorMarkerLineStyleCycler extends SeriesColorMarkerLineStyleCycler {
@Override
public List<SeriesColor> getSeriesColorList() {
// 1. Color
List<SeriesColor> seriesColorMap = new ArrayList<SeriesColor>();
seriesColorMap.add(BLUE);
seriesColorMap.add(ORANGE);
seriesColorMap.add(PURPLE);
seriesColorMap.add(GREEN);
seriesColorMap.add(RED);
seriesColorMap.add(YELLOW);
seriesColorMap.add(MAGENTA);
seriesColorMap.add(PINK);
seriesColorMap.add(LIGHT_GREY);
seriesColorMap.add(CYAN);
seriesColorMap.add(BROWN);
seriesColorMap.add(BLACK);
return seriesColorMap;
}
@Override
public List<SeriesMarker> getSeriesMarkerList() {
// 2. Marker
List<SeriesMarker> seriesMarkerList = new ArrayList<SeriesMarker>();
for (SeriesMarker seriesMarker : EnumSet.allOf(SeriesMarker.class)) {
if (seriesMarker.getIndex() >= 0) { // skip SeriesMarker.NONE
seriesMarkerList.add(seriesMarker);
}
}
return seriesMarkerList;
}
@Override
public List<SeriesLineStyle> getLineStyleList() {
// 3. Stroke
List<SeriesLineStyle> seriesLineStyleList = new ArrayList<SeriesLineStyle>();
for (SeriesLineStyle seriesLineStyle : EnumSet.allOf(SeriesLineStyle.class)) {
if (seriesLineStyle.getIndex() >= 0) { // skip SeriesLineStyle.NONE
seriesLineStyleList.add(seriesLineStyle);
}
}
return seriesLineStyleList;
}
}
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment