Pregunta

Sé que hay muchas comparaciones de java trazado de las bibliotecas por ahí, pero no voy a encontrar lo que necesito. Sólo quiero un juego de herramientas abrumadoramente simple que crea imágenes de los diagramas de dispersión de un conjunto de coordenadas. Sin interfaz, no hay interacción, ninguna pantalla especial, simplemente un sistema de coordenadas XY básica con puntos.

No sería el fin del mundo a utilizar algo que ofrece una funcionalidad mucho más de lo que necesito, pero yo preferiría no hacerlo. ¿Conoce algo parecido a lo que estoy buscando?

¿Fue útil?

Solución

¿Has mirado en JFreeChart ? Si bien se puede hacer algunas cosas muy avanzadas, sino que también hace el simple también. A continuación se muestra una captura de pantalla de su capacidad diagrama de dispersión.

alt text
(fuente: jfree.org )

Otros consejos

Miré alrededor a lo que existía, y se dio cuenta de que jcckit es técnicamente bastante bueno, pero sólo le falta un simple envoltorio alrededor de ella para que sea fácil de usar.

Así que bifurcada e hice un envoltorio muy simple. Aquí es cómo utilizar:

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();

Además de los diagramas de dispersión, se puede añadir libremente líneas a los mismos ejes, si usted desea usando 'addPlot' y 'trama'.

Este es el código: https://bitbucket.org/hughperkins/easyjcckit

un uso un JPanel personalizados para extraer sus datos (no probado, pero se entiende la 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);
(...)
}

También se puede comprobar trama sencilla de Java . ejemplo mínima (sin opciones):

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");
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top