Una forma sencilla y rápida de aprender JAVA, observando y deduciendo cómo se comporta el lenguaje a través de ejemplos prácticos.

miércoles, 13 de agosto de 2014

Gráficas con JFreeChart (IV). Detector de sucesos sociales impactantes.

En este ejemplo vamos a utilizar gráficas JFreeChart para mostrar los datos obtenidos de un detector.

El detector basado en el "Proyecto Consciencia Global" es un generador de números aleatorios que consiste en que por cada ciclo se generan 200 dígitos aleatorios binarios (0, 1). El resultado tiende a dar igual cantidad de unos y de ceros (50% de probabilidades). Como estamos hablando de un generador aleatorio existen pequeñas desviaciones en sus resultados que hace que no haya siempre la misma cantidad de unos y de ceros provocando la aparición de pequeñas protuberancias en los gráficos del detector.

Proyecto Consciencia Global (GCP) trata de demostrar que un fenómeno social impactante puede influir en el comportamiento del generador aleatorio, provocando un gráfico con protuberancias bien definidas alejadas de los valores habituales.

Un último apunte es que Java genera números aleatorios de forma determinista por tanto son pseudo-aleatorios y no tienen valor real ya que carece de una aletoriedad absoluta, pero son lo bastante aleatorios como para su uso con fines didácticos e ilustrar nuestro pequeño ejemplo.


Código:

//Detector de sucesos sociales impactantes
package gcp_chart;

import java.util.Random;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;

public class GCP_Chart {
    
    public static void main(String[] args) {

        XYSeries series = new XYSeries("");

        //Establece escala maxima-minima
        series.add(0, 100);
        series.add(0, -100);

        //Generador aleatorio binario
        Random r1 = new Random();
        int cont;
        for (int j = 0; j < 1000; j++) {
            cont = 0;
            for (int i = 0; i < 200; i++) {
                if (r1.nextBoolean()) {
                    cont++;
                }
            }
            series.add(j, cont - 100);
        }

        XYSeriesCollection dataset = new XYSeriesCollection();
        dataset.addSeries(series);

        JFreeChart chart = ChartFactory.createXYLineChart(
                "Detector Sucesos",
                "Número de Ciclos",
                "Nivel Importancia",
                dataset,
                PlotOrientation.VERTICAL,
                false,
                false,
                false
        );

        //Mostramos la grafica en pantalla
        ChartFrame fr = new ChartFrame("Detector de Sucesos Sociales", chart);
        fr.pack();
        fr.setVisible(true);

    }

}


Resultado:





















No hay comentarios:

Publicar un comentario

Con la tecnología de Blogger.