【问题标题】:Simple scatter plotter with Jzy3d (Java)带有 Jzy3d (Java) 的简单散点绘图仪
【发布时间】:2017-09-03 23:43:08
【问题描述】:

我正在尝试编写一个绘图仪类来显示一组使用Jzy3d 存储在数组中的数据点(x、y、z)。该类应包含一个方法plot(),该方法获取数据集并(自动)将其显示在 3d 坐标系中。
该方法应该在与时间相关的循环中按顺序调用。

到目前为止,我已经设法让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);
    }
}

【问题讨论】:

    标签: java plot scatter-plot jogl jzy3d


    【解决方案1】:

    这个方法应该创建新的散点图

    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);
        }
    

    【讨论】:

      猜你喜欢
      • 2021-03-08
      • 2022-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-28
      • 1970-01-01
      • 2014-09-16
      • 1970-01-01
      相关资源
      最近更新 更多