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」を使用したい場合は、同じ軸に自由に線を追加できます。
コードは次のとおりです:https ://bitbucket.org/hughperkins/easyjcckit
カスタム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);
(...)
}
また、 SimpleJavaPlotを確認することもできます。最小限の例(オプションなし):
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");