我知道那里有很多 java 绘图库的比较,但我没有找到我需要的东西。我只想要一个简单的工具包,它可以从一组坐标创建散点图图像。没有 GUI,没有交互,没有花哨的显示,只有一个基本的 XY 坐标系和点。
使用提供比我需要的更多功能的东西不会是世界末日,但我宁愿不这样做。你知道我在找什么吗?
我知道那里有很多 java 绘图库的比较,但我没有找到我需要的东西。我只想要一个简单的工具包,它可以从一组坐标创建散点图图像。没有 GUI,没有交互,没有花哨的显示,只有一个基本的 XY 坐标系和点。
使用提供比我需要的更多功能的东西不会是世界末日,但我宁愿不这样做。你知道我在找什么吗?
你看过JFreeChart吗?虽然它可以做一些非常高级的事情,但它也可以做一些简单的事情。下面显示的是其散点图功能的屏幕截图。
(来源:jfree.org)
我环顾四周,发现 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”,您可以自由地将线添加到相同的轴上。
您可以使用自定义 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);
(...)
}
您也可以检查Simple 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");