Domanda

So che ci sono molti paragoni di java tracciando biblioteche là fuori, ma io non sto trovando quello che mi serve. Voglio solo un toolkit mente numbingly semplice che crea immagini di grafici a dispersione da una serie di coordinate. No GUI, nessuna interazione, nessun display di fantasia, solo un XY di base del sistema di coordinate con punti.

Non sarebbe la fine del mondo a usare qualcosa che offre molto di più funzionalità rispetto ho bisogno, ma io non preferisco. Sai qualcosa di simile a ciò che sto cercando?

È stato utile?

Soluzione

Hai guardato JFreeChart ? Mentre può fare alcune cose molto avanzate, lo fa anche il semplice così. Di seguito si riporta uno screenshot della sua capacità di grafico a dispersione.

alt text
(fonte: jfree.org )

Altri suggerimenti

mi sono guardato intorno a ciò che esisteva, e ho capito che jcckit è tecnicamente abbastanza buono, ma manca solo un semplice involucro attorno ad esso per rendere più facile da usare.

Così ho biforcato e fatto una molto semplice involucro. Ecco come utilizzare:

import static easyjcckit.QuickPlot.*;

double[] xaxis = new double[]{0,1,2,3,4,5};
double[] yvalues = new double[]{0,1,4,9,16,25};
scatter( xaxis, yvalues ); // create a plot using xaxis and yvalues
double[] yvalues2 = new double[]{0,1,2,3,4,5};
addScatter( xaxis, yvalues2 ); // create a second plot on top of first

System.out.println("Press enter to exit");
System.in.read();

Così come grafici a dispersione, si può liberamente aggiungere linee agli stessi assi, se si desidera utilizzare 'addPlot' e 'plot'.

Ecco il codice: https://bitbucket.org/hughperkins/easyjcckit

È un uso un JPanel personalizzati per disegnare i dati (non testato, ma si ottiene l'idea ...)

private List<Point2D> data=(...);

JPanel pane=new JPanel()
{
protected paintComponent(Graphics2D g)
{
super.paintComponent(g);
int minx=(...),miny=(...),maxx=(...),maxy=(...);
for(Point2D p: data)
 {
 int x=((p.getX()-minx)/(maxx-minx))*this.getWidth();
 int y=((p.getY()-miny)/(maxy-miny))*this.getHeight();
 g.drawLine(x-5,y,x+5,y);
 g.drawLine(x,y-5,x,y+5);
 }
}
pane.setOpaque(true);
(...)
anotherComponent.add(pane);
(...)
}

Inoltre si potrebbe verificare semplice Java Plot . esempio minimo (senza opzioni):

Plot plot = Plot.plot(null).
    // setting data
    series(null, Plot.data().
        xy(1, 2).
        xy(3, 4), null);
// saving sample_minimal.png
plot.save("sample_minimal", "png");
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top