Я пытаюсь написать класс плоттера для отображения набора точек данных (x, y, z), хранящихся в массиве, с использованием Jzy3d. Класс должен содержать метод plot()
, который берет набор данных и (автоматически) отображает его в трехмерной системе координат.
Предполагается, что метод будет вызываться последовательно в цикле, зависящем от времени.
До сих пор мне удалось получить демонстрационная диаграмма рассеяния для Jzy3d работает, но я не знаю, что делает каждый бит кода. Документация Jzy3d не предоставляет столько информации, и я не могу найти какие-либо учебные пособия в Интернете.
Было бы очень признательно, если бы кто-нибудь мог объяснить демонстрацию или (что еще лучше) написать простой плоттер, который содержит аналогичный метод.
Также будут оценены любые эффективные рабочие альтернативы Jzy3d для построения графиков.
Демонстрационный код:
import java.util.Random;
import org.jzy3d.analysis.AbstractAnalysis;
import org.jzy3d.analysis.AnalysisLauncher;
import org.jzy3d.chart.factories.AWTChartComponentFactory;
import org.jzy3d.colors.Color;
import org.jzy3d.maths.Coord3d;
import org.jzy3d.plot3d.primitives.Scatter;
import org.jzy3d.plot3d.rendering.canvas.Quality;
public class ScatterDemo extends AbstractAnalysis{
public static void main(String[] args) throws Exception {
AnalysisLauncher.open(new ScatterDemo());
}
@Override
public void init(){
int size = 500000;
float x;
float y;
float z;
float a;
Coord3d[] points = new Coord3d[size];
Color[] colors = new Color[size];
Random r = new Random();
r.setSeed(0);
for(int i=0; i<size; i++){
x = r.nextFloat() - 0.5f;
y = r.nextFloat() - 0.5f;
z = r.nextFloat() - 0.5f;
points[i] = new Coord3d(x, y, z);
a = 0.25f;
colors[i] = new Color(x, y, z, a);
}
Scatter scatter = new Scatter(points, colors);
chart = AWTChartComponentFactory.chart(Quality.Advanced, "newt");
chart.getScene().add(scatter);
}
}