2017-04-08 81 views
0

我想写一个绘图仪类来显示一组数据点(x,y,z)存储在一个数组中使用Jzy3d。该类应包含一个方法plot(),该方法将数据集和(自动)显示在三维坐标系中。
该方法应该在时间依赖循环中顺序调用。简单分散绘图仪与Jzy3d(Java)

到目前为止,我已经管理得到一个scatter plot demo for 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); 
    } 
} 

回答

0

这种方法应该创建新的分散

public void plot(Coord3d[] points, Color[] colors) { 
    Scatter scatter = new Scatter(points, colors); 
    chart = AWTChartComponentFactory.chart(Quality.Advanced, "newt"); 
    chart.getScene().add(scatter); 
} 

这段代码显示了如何创建数据集,只需用你的坐标和颜色

int size = 100 
Coord3d[] points = new Coord3d[size]; 
Color[] colors = new Color[size]; 
for(int i=0; i < size; i++){ 
     x = i; 
     y = i; 
     z = i; 
     points[i] = new Coord3d(x, y, z); 

     r = 0.5; 
     b = 0.5; 
     g = 0.5; 
     colors[i] = new Color(r, g, b); 
    }