zoukankan      html  css  js  c++  java
  • jzy3D从入门到弃坑_3使用jzy3D0.9画2D散点图--多条线条

    jzy3D从入门到弃坑_3

    使用jzy3D0.9画2D散点图--多条线条

    觉得有用的话,欢迎一起讨论相互学习~Follow Me

    主要思路

    • 将多个线条的二维数组读入Scatter对象
    • 存入到同一个画布中

    存入多个Scatter对象中

    package momfo.metaheuristics.momfea;
    
    import momfo.core.SolutionSet;
    import org.jzy3d.chart.Chart;
    import org.jzy3d.chart.ChartLauncher;
    import org.jzy3d.colors.Color;
    import org.jzy3d.global.Settings;
    import org.jzy3d.maths.Coord3d;
    import org.jzy3d.plot3d.primitives.Scatter;
    import org.jzy3d.plot3d.rendering.canvas.Quality;
    import org.jzy3d.chart.Chart;
    
    import java.awt.*;
    
    
    public class PlotTwoD_alpha {
        //如果要在一张图中添加多个点,我们采用首先取点,然后生成颜色的方式
        public Scatter Setpoint(double[][] maxtrix, float[] rgb, float alpha, float width) {
            Coord3d[] POINTS;
            Color[] COLORS;
            int size = maxtrix.length;//size
            int numobj = maxtrix[0].length;//2
            float x;
            float y;
            float z;
            POINTS = new Coord3d[size];
            COLORS = new Color[size];
            for (int i = 0; i < size; i++) {
                x = 0;
                y = (float) maxtrix[i][0];
                z = (float) maxtrix[i][1];
                POINTS[i] = new Coord3d(x, y, z);
                COLORS[i] = new Color(rgb[0], rgb[1], rgb[2], alpha);//表示RGB值和透明度
            }
            Scatter scatter = new Scatter(POINTS, COLORS, width);//width 表示线条宽度
            return scatter;
        }
    }
    
    

    在同一画布中将多个Scatter表示出来

    package momfo.metaheuristics.momfea;
    
    import java.awt.*;
    import java.io.IOException;
    import java.text.DecimalFormat;
    import java.util.HashMap;
    
    import momfo.core.*;
    import momfo.util.comparators.LocationComparator;
    
    
    import momfo.operators.crossover.CrossoverFactory;
    import momfo.operators.mutation.MutationFactory;
    import momfo.operators.selection.SelectionFactory;
    import momfo.problems.benchmarks.*;
    import momfo.qualityIndicator.QualityIndicator;
    import momfo.util.JMException;
    import org.jzy3d.chart.Chart;
    import org.jzy3d.chart.ChartLauncher;
    import org.jzy3d.global.Settings;
    import org.jzy3d.plot3d.primitives.Scatter;
    import org.jzy3d.plot3d.rendering.canvas.Quality;
    
    public class ReadPrintPF {
        public static void main(String args[]) throws IOException, JMException, ClassNotFoundException {
            ProblemSet problemSet; // The problem to solve
            momfo.qualityIndicator.util.MetricsUtil utils_;
            SolutionSet TruePFT1;
            SolutionSet TruePFT2;
    
    
            problemSet = CIHS.getProblem();
            String pf1 = "PF/" + problemSet.get(0).getHType() + ".pf";
            String pf2 = "PF/" + problemSet.get(1).getHType() + ".pf";
            utils_ = new momfo.qualityIndicator.util.MetricsUtil();
            // 返回的是一个solutionSet变量
            //使用这种方式读取的SolutionSet没有决策变量
            TruePFT1 = utils_.readNonDominatedSolutionSet(pf1);
            TruePFT2 = utils_.readNonDominatedSolutionSet(pf2);
    //        TruePFT1.printObjectivesToFile("./src/main/java/momfo/metaheuristics/momfea/" + "CIHS" + "T1" + ".txt");
            //并且可以发现目标函数值都是double类型的浮点数类型
    //        TruePFT1.printObjectives();
            ReadPrintPFTools tools = new ReadPrintPFTools();
            double[][] TruePFT1_Matrix = tools.writeObjectivesToMatrix(TruePFT1);
            double[][] TruePFT2_Matrix = tools.writeObjectivesToMatrix(TruePFT2);
            float[] rgb1 = {0, 0, 0};//黑色
            float[] rgb2 = {(float) 0.5, (float) 0.5, (float) 0.5};//灰色
            float alpha = (float) 0.5;
    
            PlotTwoD_alpha pttwoD = new PlotTwoD_alpha();
            Scatter scatter1 = pttwoD.Setpoint(TruePFT1_Matrix, rgb1, alpha, 5);
            Scatter scatter2 = pttwoD.Setpoint(TruePFT2_Matrix, rgb2, alpha, 5);
            Chart chart = new Chart(Quality.Advanced, "awt");
            // add scatters
            chart.getScene().add(scatter1);
            chart.getScene().add(scatter2);
            Settings.getInstance().setHardwareAccelerated(true);
            //open chart
            ChartLauncher.openChart(chart, new Rectangle(0, 0, 600, 600), "CIHS");
        }
    
    
    }
    
    

    结果

    在这里插入图片描述

  • 相关阅读:
    基础算法:求目标值 &字符串反转
    算法计算出股票最佳交易时间点
    Python 设计模式—命令模式
    Python 设计模式—代理模式
    有趣的算法题~单调栈
    令人头大的字符串—算法处理
    WebUI 自动化测试的经典设计模式:PO
    双指针—滑动窗口算法解析
    Python 设计模式—观察者模式
    多线程之读写锁原理
  • 原文地址:https://www.cnblogs.com/cloud-ken/p/12034479.html
Copyright © 2011-2022 走看看