Java: действительно простая утилита рассеивания - PullRequest
6 голосов
/ 07 декабря 2009

Я знаю, что есть много сравнений библиотек java-графиков, но я не могу найти то, что мне нужно. Я просто хочу ошеломляющий простой инструментарий, который создает изображения графиков рассеяния из набора координат. Нет графического интерфейса, нет взаимодействия, нет причудливого отображения, просто базовая система координат XY с точками.

Не было бы концом света использовать что-то, что предлагает гораздо больше функциональности, чем мне нужно, но я бы предпочел этого не делать. Вы знаете что-нибудь вроде того, что я ищу?

Ответы [ 4 ]

7 голосов
/ 07 декабря 2009

Вы смотрели на JFreeChart ? Хотя он может делать очень сложные вещи, он также делает и простое. Ниже показан снимок экрана с возможностью рассеивания.

alt text
(источник: jfree.org )

3 голосов
/ 18 октября 2012

Я посмотрел вокруг на то, что существовало, и понял, что jcckit технически довольно хорош, но просто не имеет простой оболочки вокруг него, чтобы его было легко использовать.

Так что я раздвоил его и сделал действительно простую обертку. Вот как использовать:

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

Помимо диаграмм разброса, вы можете свободно добавлять линии к тем же осям, если хотите использовать addPlot и plot.

Вот код: https://bitbucket.org/hughperkins/easyjcckit

2 голосов
/ 07 декабря 2009

Вы используете пользовательский JPanel для рисования ваших данных (не проверено, но вы поняли ...)

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);
(...)
}
1 голос
/ 08 сентября 2013

Также вы можете проверить Простой Java Plot . Минимальный пример (без параметров):

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");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...