Question

Je sais qu'il existe de nombreuses comparaisons de bibliothèques de traçage Java, mais je ne trouve pas ce dont j'ai besoin.Je veux juste une boîte à outils incroyablement simple qui crée des images de nuages ​​de points à partir d'un ensemble de coordonnées.Pas d'interface graphique, pas d'interaction, pas d'affichage sophistiqué, juste un système de coordonnées XY de base avec des points.

Ce ne serait pas la fin du monde d’utiliser quelque chose qui offre beaucoup plus de fonctionnalités que ce dont j’ai besoin, mais je préfère ne pas le faire.Connaissez-vous quelque chose qui ressemble à ce que je recherche ?

Était-ce utile?

La solution

As-tu regardé JFreeChart?Bien qu'il puisse faire des choses très avancées, il fait aussi des choses simples.Vous trouverez ci-dessous une capture d'écran de sa capacité de nuage de points.

alt text
(source: jfree.org)

Autres conseils

J'ai regardé ce qui existait et j'ai réalisé que jcckit est techniquement assez bon, mais il lui manque juste un simple wrapper pour le rendre facile à utiliser.

Je l'ai donc fourchu et j'ai fait un emballage très simple.Voici comment l'utiliser :

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

En plus des nuages ​​de points, vous pouvez librement ajouter des lignes sur les mêmes axes si vous le souhaitez en utilisant « addPlot » et « plot ».

Voici le code : https://bitbucket.org/hughperkins/easyjcckit

Vous utilisez un JPanel personnalisé pour dessiner vos données (non testé, mais vous voyez l'idée...)

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

Vous pouvez également vérifier Tracé Java simple.Exemple minimal (pas d'options) :

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");
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top