Pergunta

Eu sei que há muitas comparações de java plotagem bibliotecas lá fora, mas eu não estou achando que eu preciso. Eu só quero um conjunto de ferramentas tediosamente simples que cria imagens de gráficos de dispersão de um conjunto de coordenadas. No GUI, nenhuma interação, sem exibição extravagante, apenas um XY sistema de coordenadas básico com pontos.

Não seria o fim do mundo para uso algo que oferece uma funcionalidade muito mais do que eu preciso, mas eu prefiro não. Você sabe de nada parecido com o que estou procurando?

Foi útil?

Solução

Você olhou para JFreeChart ? Enquanto ele pode fazer algumas coisas muito avançadas, que também faz o simples assim. Abaixo é mostrada uma imagem de sua capacidade de dispersão.

text alt
(fonte: jfree.org )

Outras dicas

Olhei para o que existia, e percebeu que jcckit é tecnicamente muito bom, mas só falta um invólucro simples em torno dele para torná-lo fácil de usar.

Então, eu bifurcada e fez um invólucro realmente simples. Veja como usar:

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

Além de gráficos de dispersão, você pode livremente adicionar linhas para os mesmos eixos se você deseja usando 'addPlot' e 'trama'.

Aqui está o código: https://bitbucket.org/hughperkins/easyjcckit

É um usar um JPanel personalizados para desenhar os seus dados (não testado, mas você começa a idéia ...)

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

Além disso, você pode verificar simples Java Plot . exemplo mínimo (sem opções):

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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top