These markers draw various forms of markers on data points. Also, they can be cached, which is very useful, when drawing a large amount of markers.
Figure 5.6.1.1 Markers Demonstration
1 | import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import javax.swing.JFrame; import lt.monarch.chart.chart2D.Chart2D; import lt.monarch.chart.chart2D.Grid; import lt.monarch.chart.chart2D.axis.Axis2DX; import lt.monarch.chart.chart2D.axis.Axis2DY; import lt.monarch.chart.chart2D.engine.PlaneMapper2D; import lt.monarch.chart.chart2D.series.LineSeries; import lt.monarch.chart.engine.ChartObject; import lt.monarch.chart.legend.Legend; import lt.monarch.chart.mapper.LabelAxisMapper; import lt.monarch.chart.mapper.MathAxisMapper; import lt.monarch.chart.marker.CrossMarker; import lt.monarch.chart.marker.DiamondMarker; import lt.monarch.chart.marker.DotMarker; import lt.monarch.chart.marker.PolygonMarker; import lt.monarch.chart.marker.SquareMarker; import lt.monarch.chart.marker.StarMarker; import lt.monarch.chart.models.ChartDataModel; import lt.monarch.chart.swing.JChartPanel; import lt.monarch.chart.view.LabeledChart; public class Markers extends JFrame { private transient JChartPanel m_chartPanel; public Markers() { setLayout(new BorderLayout()); initChart(); add(m_chartPanel, BorderLayout.CENTER); } void initChart() { /* * Creating mappers */ String labels[] = { "2005", "2006", "2007" }; LabelAxisMapper xMapper = new LabelAxisMapper(labels); MathAxisMapper yMapper = new MathAxisMapper(0, 5500); /* * Creating and setting axes */ Axis2DX axisX = new Axis2DX(xMapper); axisX.setTitle("Year"); Axis2DY axisY = new Axis2DY(yMapper); axisY.setTitle("Millions of euro"); /* * Setting series */ LineSeries series1 = new LineSeries(generateCYModel(), new PlaneMapper2D(), xMapper, yMapper); series1.getPaintStyle().setForeground(null); series1.setName("Bulgaria"); DiamondMarker diamondMarker = new DiamondMarker(); diamondMarker.setMarkerSize(8); diamondMarker.getPaintStyle().setBackground(new Color(251, 178, 47)); series1.addMarker(diamondMarker); LineSeries series2 = new LineSeries(generateEEModel(), new PlaneMapper2D(), xMapper, yMapper); series2.getPaintStyle().setForeground(null); series2.setName("Estonia"); SquareMarker squareMarker = new SquareMarker(); squareMarker.getPaintStyle().setBackground(Color.blue); squareMarker.setMarkerSize(8); series2.addMarker(squareMarker); LineSeries series3 = new LineSeries(generateLVModel(), new PlaneMapper2D(), xMapper, yMapper); series3.setName("Latvia"); series3 .getPaintStyle().setForeground(null); DotMarker dotMarker = new DotMarker(); dotMarker.setMarkerSize(8); dotMarker.getPaintStyle().setBackground(Color.green.darker()); series3.addMarker(dotMarker); LineSeries series4 = new LineSeries(generateLUModel(), new PlaneMapper2D(), xMapper, yMapper); series4.setName("Luxembourg"); series4.getPaintStyle().setForeground(null); CrossMarker crossMarker = new CrossMarker(); crossMarker.setMarkerSize(8); crossMarker.getPaintStyle().setBackground(new Color(219, 67, 47)); series4.addMarker(crossMarker); LineSeries series5 = new LineSeries(generateMTModel(), new PlaneMapper2D(), xMapper, yMapper); series5.setName("Malta"); series5.getPaintStyle().setForeground(null); PolygonMarker polygonMarker = new PolygonMarker(); polygonMarker.getPaintStyle().setBackground(new Color(223, 95, 32)); polygonMarker.setMarkerSize(8); series5.addMarker(polygonMarker); LineSeries series6 = new LineSeries(generateSIModel(), new PlaneMapper2D(), xMapper, yMapper); series6.setName("Slovenia"); series6.getPaintStyle().setForeground(null); StarMarker starMarker = new StarMarker(); starMarker.setMarkerSize(8); starMarker.getPaintStyle().setBackground(new Color(255, 195, 30)); series6.addMarker(starMarker); /* * Creating the grid */ Grid grid = new Grid(xMapper, yMapper); /* * Creating the chart and add objects */ Chart2D chart = new Chart2D(); chart.setObjects(new ChartObject[] { grid, axisX, axisY, series6, series2, series3, series4, series5, series1, series6 }); chart.setYAxis(axisY); chart.setXAxis(axisX); /* * Set the title of chart */ LabeledChart topChart = new LabeledChart(chart); topChart.setTitle("Taxes on Production and Imports of General Governments"); /* * Creating the legend */ Legend legend = new Legend(chart); legend.setMaxColumns(1); topChart.setRightView(legend); /* * Add topChart to panel */ m_chartPanel = new JChartPanel(topChart); } private ChartDataModel generateCYModel() { ChartDataModel modelZ = new ChartDataModel(); modelZ.add(new Object[] { "2005", 2304.2 }); modelZ.add(new Object[] { "2006", 2587.8 }); modelZ.add(new Object[] { "2007", 3090.2 }); return modelZ; } private ChartDataModel generateEEModel() { ChartDataModel modelZ = new ChartDataModel(); modelZ.add(new Object[] { "2005", 1400d }); modelZ.add(new Object[] { "2006", 1761.1 }); modelZ.add(new Object[] { "2007", 2110.3 }); return modelZ; } private ChartDataModel generateLVModel() { ChartDataModel modelZ = new ChartDataModel(); modelZ.add(new Object[] { "2005", 1609.8 }); modelZ.add(new Object[] { "2006", 2054.1 }); modelZ.add(new Object[] { "2007", 2579.2 }); return modelZ; } private ChartDataModel generateLUModel() { ChartDataModel modelZ = new ChartDataModel(); modelZ.add(new Object[] { "2005", 3966.4 }); modelZ.add(new Object[] { "2006", 4246.1 }); modelZ.add(new Object[] { "2007", 4614.9 }); return modelZ; } private ChartDataModel generateMTModel() { ChartDataModel modelZ = new ChartDataModel(); modelZ.add(new Object[] { "2005", 717.2 }); modelZ.add(new Object[] { "2006", 759.3 }); modelZ.add(new Object[] { "2007", 800.2 }); return modelZ; } private ChartDataModel generateSIModel() { ChartDataModel modelZ = new ChartDataModel(); modelZ.add(new Object[] { "2005", 4450.0 }); modelZ.add(new Object[] { "2006", 4635.7 }); modelZ.add(new Object[] { "2007", 5024.5 }); return modelZ; } public static void main(String[] args) { Markers frame = new Markers(); frame.setSize(new Dimension(600, 400)); frame.setDefaultCloseOperation(EXIT_ON_CLOSE); frame.setTitle("Taxes on Production and Imports"); frame.setVisible(true); } } |
Enabling caching:
1 | //creates an object, named polygonMarker, which is an instance of PolygonMarker PolygonMarker polygonMarker = new PolygonMarker(); //enables caching marker.setCachingEnabled(true); |