PDA

View Full Version : [java] Disegnare un semplice grafico


franksisca
02-12-2006, 09:19
Ragazzi, il grafico che devo disegnare è questo:

strategia
| *
| *
| *
|
|__________________numero partite

mi dite come faccio ad implementarlo, magari mettendo pure i nomi e le spaziature sugli assi???

GRAZIE

andbin
02-12-2006, 11:27
Ragazzi, il grafico che devo disegnare è questo:

strategia
| *
| *
| *
|
|__________________numero partite

mi dite come faccio ad implementarlo, magari mettendo pure i nomi e le spaziature sugli assi???

GRAZIEPuoi utilizzare librerie apposite per la gestione di grafici, vedi ad esempio JFreeChart (http://www.jfree.org/jfreechart/index.html) (io ho già avuto modo di usarla, ti assicuro che è molto valida). Ma ce ne sono anche altre, che però non conosco.

Oppure si può seguire la strada "fai da te": estendi JComponent, fai l'override del metodo paintComponent e disegni tu il grafico usando le API di Java2D.

franksisca
02-12-2006, 17:54
Puoi utilizzare librerie apposite per la gestione di grafici, vedi ad esempio JFreeChart (http://www.jfree.org/jfreechart/index.html) (io ho già avuto modo di usarla, ti assicuro che è molto valida). Ma ce ne sono anche altre, che però non conosco.

Oppure si può seguire la strada "fai da te": estendi JComponent, fai l'override del metodo paintComponent e disegni tu il grafico usando le API di Java2D.
scusa, se rispondo solo ora.......JFreeChart la conosco, ma mi servirebbe un esempietto pratico pratico, perchè lunedì ho la consegna della tesi e non ho il tempo di leggermi nulla(mia manca tutta la fase di analisi dei risultati, fatta tramite grafici).

andbin
02-12-2006, 18:27
scusa, se rispondo solo ora.......JFreeChart la conosco, ma mi servirebbe un esempietto pratico pratico, perchè lunedì ho la consegna della tesi e non ho il tempo di leggermi nulla(mia manca tutta la fase di analisi dei risultati, fatta tramite grafici).Quindi vuoi usare JFreeChart o l'approccio "fai da te"???

franksisca
02-12-2006, 18:31
Quindi vuoi usare JFreeChart o l'approccio "fai da te"???
il più veloce, mi fido ciecamente di te:D:D:D

andbin
04-12-2006, 09:32
Ecco un esempio di utilizzo di JFreeChart per realizzare un grafico "a pallini":
import java.awt.*;
import java.awt.geom.*;

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.axis.ValueAxis;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
import org.jfree.data.xy.*;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;

public class GraficoPunti extends ApplicationFrame
{
public GraficoPunti (String title, double[][] punti)
{
super (title);

//---- Creazione dataset ----
XYSeries series1 = new XYSeries ("Serie 1");

for (int i = 0; i < punti.length; i++)
series1.add (punti[i][0], punti[i][1]);

XYSeriesCollection dataset = new XYSeriesCollection ();

dataset.addSeries (series1);

//---- Creazione grafico ----
JFreeChart chart = ChartFactory.createScatterPlot (
"Titolo del grafico",
"Asse X",
"Asse Y",
dataset,
PlotOrientation.VERTICAL,
true,
true,
false);

XYPlot plot = (XYPlot) chart.getPlot ();

XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer (false, true);
renderer.setDrawOutlines (false);
renderer.setUseFillPaint (true);
renderer.setFillPaint (Color.blue);
renderer.setShape (new Ellipse2D.Double (-5, -5, 10, 10));
plot.setRenderer (renderer);

//---- Gestione layout ----
ChartPanel chartPanel = new ChartPanel (chart);
chartPanel.setPreferredSize (new Dimension (500, 300));
setContentPane (chartPanel);
}

public static void main (String[] args)
{
double[][] punti = { {1.0,5.0}, {2.0,10.0}, {3.0,7.0}, {4.0,9.0} };

GraficoPunti grafico = new GraficoPunti ("TITOLO", punti);

grafico.pack ();
RefineryUtilities.centerFrameOnScreen (grafico);
grafico.setVisible (true);
}
}Si ottiene questo grafico:
http://img152.imageshack.us/img152/9947/graficopalliniio8.th.png (http://img152.imageshack.us/my.php?image=graficopalliniio8.png)

Diciture di testo, colori, dimensioni, ecc... sono facilmente configurabili nel sorgente.

franksisca
04-12-2006, 10:23
ok, grazie mille, appena possibile provo e vedo se mi crea problemi.

p.s.
per implementare la libreria, basta che la metto nello stesso package???

oppure, per evitare problemi la metto nella classe di java????

andbin
04-12-2006, 10:27
per implementare la libreria, basta che la metto nello stesso package???

oppure, per evitare problemi la metto nella classe di java????Per usare JFreeChart, devi scaricare lo zip di JFreeChart (jfreechart-X.X.X.zip) e poi mettere in CLASSPATH i seguenti file che sono sotto la directory 'lib' (vedi nello zip):
- jfreechart-X.X.X.jar
- jcommon-X.X.X.jar

franksisca
04-12-2006, 10:29
Per usare JFreeChart, devi scaricare lo zip di JFreeChart (jfreechart-X.X.X.zip) e poi mettere in CLASSPATH i seguenti file che sono sotto la directory 'lib' (vedi nello zip):
- jfreechart-X.X.X.jar
- jcommon-X.X.X.jar
ok, grazie mille.