jzy3D从入门到弃坑_3 使用jzy3D0.9画2D散点图--多条线条
时间:2022-07-23
本文章向大家介绍jzy3D从入门到弃坑_3 使用jzy3D0.9画2D散点图--多条线条,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
主要思路
- 将多个线条的二维数组读入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");
}
}
结果
- hdu---(1800)Flying to the Mars(trie树)
- 解决Tomcat数据连接池无法释放
- hdu----(1075)What Are You Talking About(trie之查找)
- hdu--(1247)Hat’s Words(trie树)
- HDU----(4519)郑厂长系列故事——体检
- 张戈博客成功启用移动端主题:Mobile Pack
- Oracle数据库性能障碍分析利器:SYSTEMSTATE DUMP介绍
- hdu ---(4517)小小明系列故事——游戏的烦恼(Dp)
- HTTP加速器varnish安装小记(1)
- 手把手教你估算深度神经网络的最优学习率(附代码&教程)
- 批处理判断第一个硬盘的最后一个分区并进入
- MVCC原理探究及MySQL源码实现分析
- 关于热点数据导出与加载的影响,多的是你不知道的事
- 【Python】30行代码教你将微信变成智能回复机器人
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- python第十四课--排序及自定义函数之自定义函数(案例五)
- python第十五课——全局变量and局部变量
- python第十六课——ascii码
- python第十六课——外部函数and内部函数
- python第十七课——列表生成式
- python第十八课——常用内置函数
- python第十九课——random模块中的常用函数
- python第二十课——math模块中常用的函数
- python第二十一课——str中的常用函数(重要)
- python第二十二课——list函数
- python第二十三课——dict中的函数
- python第二十四课——set中的函数
- python第二十五课——闭包
- LNMP架构应用实战——PHP扩展及缓存插件安装
- python第二十六课——装饰器