Java tutorial
/* * The MIT License * * Copyright 2016 Benny Lutati. * * 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 bc.ui.swing.charts; import bgu.dcr.az.api.exen.stat.vmod.LineVisualModel; import java.awt.BorderLayout; import java.awt.Color; import java.util.List; import java.util.Map.Entry; import javax.swing.JFrame; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartPanel; import org.jfree.chart.JFreeChart; import org.jfree.chart.axis.NumberAxis; import org.jfree.chart.plot.PlotOrientation; import org.jfree.chart.plot.XYPlot; import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer; import org.jfree.data.jdbc.JDBCXYDataset; import org.jfree.data.xy.XYDataset; import org.jfree.data.xy.XYSeries; import org.jfree.data.xy.XYSeriesCollection; /** * * @author bennyl */ public class LineChart extends javax.swing.JPanel { ChartPanel chartPanel; private XYLineAndShapeRenderer renderer; /** Creates new form LineChart */ public LineChart() { initComponents(); } public void setModel(LineVisualModel line) { XYDataset dataset = createDataset(line); JFreeChart chart = ChartFactory.createXYLineChart(line.getTitle(), // chart title line.getDomainAxisLabel(), // x axis label line.getRangeAxisLabel(), // y axis label dataset, // data PlotOrientation.VERTICAL, true, // include legend true, // tooltips false // urls ); chart.setBackgroundPaint(Color.white); XYPlot plot = chart.getXYPlot(); plot.setBackgroundPaint(Color.WHITE); plot.setDomainGridlinePaint(Color.lightGray); plot.setRangeGridlinePaint(Color.lightGray); renderer = (XYLineAndShapeRenderer) plot.getRenderer(); renderer.setBaseShapesVisible(true); renderer.setBaseShapesFilled(true); NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis(); rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits()); renderer.setSeriesPaint(0, new Color(153, 215, 255)); removeAll(); chartPanel = new ChartPanel(chart); add(chartPanel, BorderLayout.CENTER); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents private void initComponents() { setBackground(new java.awt.Color(202, 224, 195)); setLayout(new java.awt.BorderLayout()); }// </editor-fold>//GEN-END:initComponents // Variables declaration - do not modify//GEN-BEGIN:variables // End of variables declaration//GEN-END:variables private XYDataset createDataset(LineVisualModel line) { final List<String> algorithms = line.getAlgorithms(); XYSeries[] series = new XYSeries[algorithms.size()]; int i = 0; for (String algorithm : algorithms) { XYSeries series1 = new XYSeries(algorithm); //HERE SHOULD BE THE ALGORITHM NAME for (Entry<Double, Double> v : line.getValues(algorithm).entrySet()) { series1.add(v.getKey(), v.getValue()); } series[i++] = series1; } XYSeriesCollection dataset = new XYSeriesCollection(); for (XYSeries s : series) { dataset.addSeries(s); } return dataset; } }