2017-04-08 25 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); 
    }