6 Stimmen

Java: Wirklich einfaches Dienstprogramm für Streudiagramme

Ich weiß, es gibt viele Vergleiche von Java-Plot-Bibliotheken gibt, aber ich bin nicht finden, was ich brauche. Ich will einfach nur ein verblüffend einfaches Toolkit, das Bilder von Streudiagrammen aus einem Satz von Koordinaten erstellt. Keine GUI, keine Interaktion, keine ausgefallene Anzeige, nur ein einfaches XY-Koordinatensystem mit Punkten.

Es wäre nicht das Ende der Welt, etwas zu verwenden, das viel mehr Funktionen bietet, als ich brauche, aber ich möchte es lieber nicht. Kennen Sie etwas Ähnliches wie das, wonach ich suche?

8voto

JasCav Punkte 34020

Haben Sie sich angesehen JFreeChart ? Es kann zwar einige sehr fortschrittliche Dinge tun, aber auch die einfachen. Unten sehen Sie einen Screenshot der Streudiagramm-Funktion.

alt text
(Quelle: <a href="http://www.jfree.org/jfreechart/images/ScatterPlotDemo1.png" rel="nofollow noreferrer">jfree.org </a>)

3voto

Hugh Perkins Punkte 7016

Ich habe mich umgesehen, was es gibt, und festgestellt, dass jcckit technisch ziemlich gut ist, aber es fehlt ein einfacher Wrapper, um es einfach zu benutzen.

Also habe ich es geforkt und einen wirklich einfachen Wrapper gemacht. Hier ist, wie zu verwenden:

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

Neben Streudiagrammen können Sie mit "addPlot" und "plot" auch Linien zu denselben Achsen hinzufügen, wenn Sie dies wünschen.

Hier ist der Code: https://bitbucket.org/hughperkins/easyjcckit

2voto

Pierre Punkte 32911

Sie können ein benutzerdefiniertes JPanel verwenden, um Ihre Daten zu zeichnen (nicht getestet, aber Sie verstehen die Idee...)

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

1voto

yuriy-g Punkte 11

Sie können auch Folgendes überprüfen Einfache Java-Darstellung . Minimales Beispiel (keine Optionen):

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X