Advertisement
Guest User

Untitled

a guest
Nov 2nd, 2012
145
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.52 KB | None
  1. public class JPaintablePanel extends ChartPanel implements Runnable {
  2.     private AlgorithmManager algoManager;
  3.     private static DefaultXYDataset dt = new DefaultXYDataset();
  4.     private static JFreeChart chart = createChart(JPaintablePanel.dt);
  5.     // public DefaultXYDataset dataset = new DefaultXYDataset();
  6.     private DefaultXYDataset dataset = JPaintablePanel.dt;
  7.     private ParametersData data;
  8.     private int iterations, periods;
  9.     private int percent = 10;
  10.     double[][] series;
  11.  
  12.     public JPaintablePanel() {
  13.         super(JPaintablePanel.chart, false);
  14.     }
  15.  
  16.     public void setAlgorithmManager(AlgorithmManager man, ParametersData d) {
  17.         this.algoManager = man;
  18.         data = d;
  19.         iterations = (int) data.getNumberOfIterations();
  20.         periods = iterations / percent;
  21.         // System.out.println(periods + ", ite=" + iterations);
  22.         series = new double[2][periods];
  23.     }
  24.  
  25.     @Override
  26.     public void run() {
  27.         // TODO Auto-generated method stub
  28.         // dataset.addSeries("Series0", createSeries(10));
  29.         for (int i = 0; i < periods; i++) {
  30.             series[0][i] = (double) i;
  31.             series[1][i] = 0;// random.nextInt(100) / 2;//0;
  32.         }
  33.         for (int it = 0; it < 10; it++) {
  34.             series[1][random.nextInt(periods)] =  random.nextInt(100) / 2;
  35.             double[][] d = new double[2][periods];
  36.             for (int i = 0; i < periods; i++) {
  37.                 d[0][i] = series[0][i];
  38.                 d[1][i] = series[1][i];
  39.             }
  40. //          dataset.removeSeries("Series0");
  41. //          dataset.addSeries("Series0", series);
  42. //          try {
  43. //              Thread.sleep(100);
  44. //          } catch (java.lang.InterruptedException ex) {
  45. //          }
  46.         }
  47.         dataset.addSeries("Series0", series);
  48.         // int periodAmount = 0;
  49.         // boolean remove = false;
  50.         // int it = 0;
  51.         // for (int i = 0; i < iterations; i++) {
  52.         // if (i > 0 && remove) {
  53.         // // dataset.removeSeries("Series0");
  54.         // remove = false;
  55.         // }
  56.         // if (i % periods == 0) {
  57.         // periodAmount++;
  58.         // dataset.addSeries("Series" + it, createSeries(it++));
  59.         // // System.out.println("Dizalam!");
  60.         // try {
  61.         // Thread.sleep(0);
  62.         // } catch (java.lang.InterruptedException ex) {
  63.         // }
  64.         // if (periodAmount < periods) {
  65.         // remove = true;
  66.         // }
  67.         // }
  68.         // // if(it == 2) {
  69.         // // System.out.println("i=" + i);
  70.         // // break;
  71.         // // }
  72.         // }
  73.     }
  74.  
  75.     private static final Random random = new Random();
  76.  
  77.     private double[][] createSeries(int ind) {
  78.         series[1][ind] = random.nextInt(100) / 2;
  79.         // for (int j = 0; j < periods; j++) {
  80.         // System.out.print(series[1][j] + ", ");
  81.         // }
  82.         // System.out.println(" :::index = " + i);
  83.         double[][] d = new double[2][periods];
  84.         for (int i = 0; i < periods; i++) {
  85.             d[0][i] = series[0][i];
  86.             d[1][i] = series[1][i];
  87.         }
  88.         return d;
  89.     }
  90.  
  91.     private static JFreeChart createChart(XYDataset dataset) {
  92.  
  93.         // create the chart...
  94.         JFreeChart chart = ChartFactory.createXYLineChart(null, // chart title
  95.                 "Ilość kroków", // domain axis label
  96.                 "Odległość", // range axis label
  97.                 dataset, // initial series
  98.                 PlotOrientation.VERTICAL, // orientation
  99.                 true, // include legend
  100.                 true, //
  101.                 false //
  102.                 );
  103.  
  104.         chart.setBackgroundPaint(Color.white);
  105.  
  106.         XYPlot plot = (XYPlot) chart.getPlot();
  107.         plot.setBackgroundPaint(new Color(0xffffe0));
  108.         plot.setDomainGridlinesVisible(true); //
  109.         plot.setDomainGridlinePaint(Color.lightGray); //
  110.         plot.setRangeGridlinePaint(Color.lightGray); //
  111.  
  112.         //
  113.         TickUnitSource ticks = NumberAxis.createIntegerTickUnits();
  114.         NumberAxis domain = (NumberAxis) plot.getDomainAxis();
  115.         domain.setStandardTickUnits(ticks);
  116.         NumberAxis range = (NumberAxis) plot.getRangeAxis();
  117.         range.setStandardTickUnits(ticks);
  118.  
  119.         //
  120.         XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer(true, true);
  121.         plot.setRenderer(renderer);
  122.         renderer.setBaseItemLabelPaint(Color.blue);
  123.         renderer.setBaseShapesVisible(true); //
  124.         renderer.setBaseShapesFilled(true); //
  125.  
  126.         // set the renderer's stroke
  127.         Stroke stroke = new BasicStroke(1.5f, BasicStroke.CAP_ROUND,
  128.                 BasicStroke.JOIN_BEVEL); //
  129.         renderer.setBaseOutlineStroke(stroke);
  130.         // renderer.setBasePaint(Color.RED);
  131.  
  132.         //
  133.         NumberFormat format = NumberFormat.getNumberInstance();
  134.         format.setMaximumFractionDigits(2);
  135.         XYItemLabelGenerator generator = new StandardXYItemLabelGenerator(
  136.                 StandardXYItemLabelGenerator.DEFAULT_ITEM_LABEL_FORMAT, format,
  137.                 format);
  138.         renderer.setBaseItemLabelGenerator(generator);
  139.         renderer.setBaseItemLabelsVisible(true);
  140.  
  141.         // XYItemRenderer rende = chart.getXYPlot().getRenderer();
  142.         // rende.setSeriesPaint(0, Color.blue);
  143.         // rende.setSeriesPaint(1, new Color(0xffffe0));
  144.  
  145.         return chart;
  146.     }
  147. }
Advertisement
RAW Paste Data Copied
Advertisement