Avatar billede touel Nybegynder
13. oktober 2008 - 14:51 Der er 7 kommentarer og
1 løsning

Statistik data fra MySQL

jeg har en masse data fra MySQL, som skal fremvises på en overskuelig måde. Uden at have kendskab til det før, vil jeg mene at en applet som kan hente data fra mysql og vise det, kunne være en mulighed. I så fald er der nogen som kan anbefale en ?

Der skal også være mulighed for at jeg kan tilføje flere funkt i appletten, så data hentes udfra mere specifikke ønsker.

Eller

Er det nemmere at jeg laver en GUI,hvorfra jeg kan hente data efter eget ønske, og så måske få en excel ark til at fremvise data ?

Hvis der er en tredje mulighed, siger I til. Hovedpointen er bare at jeg skal have et vindue som kun viser de data jeg har valgt fra db
Avatar billede arne_v Ekspert
13. oktober 2008 - 15:41 #1
Jeg tvivler på at du kan finde en færdig applet. Du bliver formentligt nødt til selv at lavde den.

Der er ikke så stor forskel på GUI i en applet og applikation.

Husk dog at database password kan findes udfra en class fil.
Avatar billede touel Nybegynder
13. oktober 2008 - 17:18 #2
ok, er der klasser i java som kan hjælpe med at lave histogrammer til dette formål ?

arne, jeg mangler en sidste ting under mit andet spg "http://www.eksperten.dk/spm/847549", før jeg kan afslutte det... Vil du lige se på det ?
Avatar billede arne_v Ekspert
13. oktober 2008 - 17:29 #3
Der findes en grafik pakke JFreeChart som kan lave en masse guf grafik.

http://www.jfree.org/jfreechart/
Avatar billede arne_v Ekspert
13. oktober 2008 - 17:30 #4
Jeg smider lige et par eksempler.
Avatar billede arne_v Ekspert
13. oktober 2008 - 17:30 #5
import java.awt.Color;
import java.awt.Dimension;
import java.util.Random;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYItemRenderer;
import org.jfree.data.statistics.HistogramDataset;
import org.jfree.ui.ApplicationFrame;

public class HistogramDemo extends ApplicationFrame {
    private static Random rng = new Random();
    public HistogramDemo() {
        super("Histogram demo");
        HistogramDataset ds = new HistogramDataset();
        double[] x = new double[25];
        for(int i = 0; i < 25; i++) {
            x[i] = rng.nextDouble();
        }
        ds.addSeries("X", x, 10, 0.0, 1.0);
        JFreeChart chart = ChartFactory.createHistogram("Random data", null, null, ds, PlotOrientation.VERTICAL, true, false, false);
        XYPlot plot = chart.getXYPlot();
        XYItemRenderer renderer = plot.getRenderer();
        renderer.setSeriesPaint(0, Color.BLUE);
        ChartPanel chartpan = new ChartPanel(chart);
        chartpan.setPreferredSize(new Dimension(600, 600));
        setContentPane(chartpan);
        pack();
        setVisible(true);
    }
    public static void main(String[] args) {
        new HistogramDemo();
    }
}
Avatar billede arne_v Ekspert
13. oktober 2008 - 17:31 #6
import java.awt.Color;
import java.awt.Dimension;
import java.text.SimpleDateFormat;
import java.util.Random;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.DateAxis;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PiePlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.category.CategoryItemRenderer;
import org.jfree.chart.renderer.xy.XYItemRenderer;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.time.Month;
import org.jfree.data.time.MovingAverage;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;
import org.jfree.ui.ApplicationFrame;

public class JFCDemo {
    public static void main(String[] args) {
        new TimeSeriesDemo();
        new PieDemo();
        new BarsDemo();
    }
}

class TimeSeriesDemo extends ApplicationFrame {
    private static Random rng = new Random();
    public TimeSeriesDemo() {
      super("Time series demo");
      double[] v = new double[96];
      v[0] = 100;
      for(int i = 1; i < v.length; i++) {
          v[i] = v[i-1] + 1 + 10 * (rng.nextDouble() - 0.5);
      }
      TimeSeries ts1 = new TimeSeries("Random data", Month.class);
      for(int y = 2000; y < 2008; y++) {
          for(int m = 1; m < 12; m++) {
              ts1.add(new Month(m, y), v[12 * (y - 2000) + m -1]);
          }
      }
      TimeSeries ts2 = MovingAverage.createMovingAverage(ts1, "3 month mov.avg.", 3, 0);
      TimeSeries ts3 = MovingAverage.createMovingAverage(ts1, "6 month mov.avg.", 6, 0);
      TimeSeries ts4 = MovingAverage.createMovingAverage(ts1, "12 month mov.avg.", 12, 0);
      TimeSeriesCollection ds = new TimeSeriesCollection();
      ds.addSeries(ts1);
      ds.addSeries(ts2);
      ds.addSeries(ts3);
      ds.addSeries(ts4);
      JFreeChart chart = ChartFactory.createTimeSeriesChart("Time series", "Time", "Value", ds, true, true, false);
      chart.setBackgroundPaint(Color.LIGHT_GRAY);
      XYPlot plot = chart.getXYPlot();
      XYItemRenderer renderer = plot.getRenderer();
      if (renderer instanceof XYLineAndShapeRenderer) {
          XYLineAndShapeRenderer rr = (XYLineAndShapeRenderer) renderer;
          rr.setShapesFilled(true);
          rr.setSeriesPaint(0, Color.BLACK);
          rr.setSeriesPaint(1, Color.CYAN);
          rr.setSeriesPaint(2, Color.MAGENTA);
          rr.setSeriesPaint(3, Color.ORANGE);
        }
      DateAxis axis = (DateAxis)plot.getDomainAxis();
      axis.setDateFormatOverride(new SimpleDateFormat("MMM-yyyy"));
      ChartPanel chartpan = new ChartPanel(chart);
      chartpan.setPreferredSize(new Dimension(600, 600));
      setContentPane(chartpan);
      pack();
      setVisible(true);
    }
}

class PieDemo extends ApplicationFrame {
    private static Random rng = new Random();
    public PieDemo() {
        super("Pie demo");
        double[] v = new double[5];
        for(int i = 0; i < v.length; i++) {
            v[i] =  rng.nextInt(1000);
        }
        DefaultPieDataset ds = new DefaultPieDataset();
        for(int i = 0; i < v.length; i++) {
            ds.setValue("Cat. " + (char)(65+i), v[i]);
        }
        JFreeChart chart = ChartFactory.createPieChart("Pie",  ds, true, true, false);
        chart.setBackgroundPaint(Color.LIGHT_GRAY);
        PiePlot plot = (PiePlot) chart.getPlot();
        plot.setSectionPaint(ds.getKey(0), Color.RED);
        plot.setSectionPaint(ds.getKey(1), Color.GREEN);
        plot.setSectionPaint(ds.getKey(2), Color.YELLOW);
        plot.setSectionPaint(ds.getKey(3), Color.BLUE);
        plot.setSectionPaint(ds.getKey(4), Color.PINK);
        ChartPanel chartpan = new ChartPanel(chart);
        chartpan.setPreferredSize(new Dimension(400, 400));
        setContentPane(chartpan);
        pack();
        setVisible(true);
    }

}

class BarsDemo extends ApplicationFrame {
    private static Random rng = new Random();
    public BarsDemo() {
        super("Bars demo");
        double[] v1 = new double[5];
        for(int i = 0; i < v1.length; i++) {
            v1[i] =  rng.nextInt(1000);
        }
        double[] v2 = new double[5];
        for(int i = 0; i < v2.length; i++) {
            v2[i] =  rng.nextInt(1000);
        }
        DefaultCategoryDataset ds = new DefaultCategoryDataset();
        for(int i = 0; i < v1.length; i++) {
            ds.addValue(v1[i], "V1", "Cat. " + (char)(65+i));
            ds.addValue(v2[i], "V2", "Cat. " + (char)(65+i));
        }
        JFreeChart chart = ChartFactory.createBarChart("Bars", "Category", "Value", ds, PlotOrientation.VERTICAL, true, true, false);
        chart.setBackgroundPaint(Color.LIGHT_GRAY);
        CategoryPlot plot = chart.getCategoryPlot();
        CategoryItemRenderer renderer = plot.getRenderer();
        renderer.setSeriesPaint(0, Color.YELLOW);
        renderer.setSeriesPaint(1, Color.RED);
        ChartPanel chartpan = new ChartPanel(chart);
        chartpan.setPreferredSize(new Dimension(400, 400));
        setContentPane(chartpan);
        pack();
        setVisible(true);
    }
}
Avatar billede arne_v Ekspert
13. oktober 2008 - 17:31 #7
JFreeChart kan godt være lidt tricky at komme igang med, men start med et fungerende
eksempel.

Jeg kigger på det andet spørgsmål senere.
Avatar billede arne_v Ekspert
28. oktober 2008 - 23:34 #8
OK ?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester