本人在学习使用 plotly 的contour plots 制作的时候,发现利用这个表格制作波的干涉模拟方面有很不错的效果,因为之前被各种波动方程和振动方程教育了很久,所以就用波函数来开动,下面分享代码,供大家参考。(我用 java 写的代码模拟的波函数的测试数据)
下面是 plotly 的全部代码,里面包含了两种生成 contour plots 图表的方式,一个生成的是单个图表,但是带着等高线,所以被我放弃了。另外一个生成是图表矩阵,我选的row=1,cols=1的模式。
1#!/usr/bin/python
2# coding=utf-8
3
4import plotly.plotly
5from plotly.graph_objs import *
6import plotly.graph_objs as go
7import plotly.tools as tool
8
9z = []
10with open("/Users/Vicky/Documents/workspace/fission/long/intervene.log") as apidata:
11 for i in apidata:
12 data = i.split("n")[0].split(",")
13 z.append(data)
14'''
15#这是单独一个表格的情况,但没找到去掉等高线的方法
16data = Data([
17 Contour(
18 z=z,
19 contours = dict(
20 coloring="heatmap"
21 )
22 )
23])
24plotly.offline.plot(data,filename="3333.html")
25'''
26data = {
27 'z': z,
28 'connectgaps': True,
29 'type': 'heatmap',
30 'zsmooth': 'best',
31 'showscale': True
32}
33fig = tool.make_subplots(rows=1, cols=1)
34fig.append_trace(data, 1, 1)
35plotly.offline.plot(fig,filename= "3333.html")
下面是 java 生成数据的代码:
1package practise;
2
3import java.awt.Point;
4import java.util.ArrayList;
5import java.util.List;
6import source.SourceCode;
7
8public class Intervene extends SourceCode {
9 public List<List<Double>> data = new ArrayList<>();
10
11 public static void main(String[] args) {
12 Intervene intervene = new Intervene();
13 intervene.testDemo001();
14 }
15
16 public void testDemo001() {
17 Point point1 = new Point(50, 50);
18 Point point2 = new Point(150, 50);
19 int lamda = 6;
20 for (int i = 0; i < 100; i++) {// y 轴
21 List<Double> distance = new ArrayList<>();
22 for (int j = 0; j < 200; j++) {// x 轴
23 Point point = new Point(j, i);
24 double x = point.distance(point1) % lamda / lamda;
25 double y = point.distance(point2) % lamda / lamda;
26 double xx = Math.sin(x * 2 * Math.PI);
27 double yy = Math.sin(y * 2 * Math.PI);
28 distance.add(xx + yy);
29 }
30 data.add(distance);
31 }
32 StringBuffer content = new StringBuffer();
33 int size = data.size();
34 for (int i = 0; i < size; i++) {
35 String text = data.get(i).toString();
36 text = text.substring(1, text.length() - 1);
37 if (i == 0)
38 content.append(text);
39 content.append(LINE + text);
40 }
41 logLong("intervene.log", content.toString());
42 }
43}
下面是生成图表:
![4ef5874a3b7e6777deb708d38c40b52c.png](https://i-blog.csdnimg.cn/blog_migrate/c70e641daedfe1501f3899ad55b6a9fa.jpeg)
技术类文章精选
- java一行代码打印心形
- Linux性能监控软件netdata中文汉化版
- 接口测试代码覆盖率(jacoco)方案分享
- 性能测试框架
- 如何在Linux命令行界面愉快进行性能测试
- 图解HTTP脑图
- 如何测试概率型业务接口
- httpclient处理多用户同时在线
- 将swagger文档自动变成测试代码
- 五行代码构建静态博客
- httpclient如何处理302重定向
- 基于java的直线型接口测试框架初探
- Tcloud 云测平台--集大成者
- 如何测试概率型业务接口
- python plotly处理接口性能测试数据方法封装
- 单点登录性能测试方案
非技术文章精选
- 为什么选择软件测试作为职业道路?
- 成为杰出Java开发人员的10个步骤
- 写给所有人的编程思维
- 自动化测试的障碍
- 自动化测试的问题所在
- 测试之《代码不朽》脑图
- 成为优秀自动化测试工程师的7个步骤
- 优秀软件开发人员的态度
- 如何正确执行功能API测试
- 未来10年软件测试的新趋势-上
- 未来10年软件测试的新趋势-上
- 自动化测试解决了什么问题
- 17种软件测试人员常用的高效技能-上
- 17种软件测试人员常用的高效技能-下
- 手动测试存在的重要原因
- 编写测试用例的17个技巧
大咖风采
- Tcloud 云测平台--集大成者
- Android App 测试工具及知识大集合
- 4399AT UI自动化CI与CD
- Android App常规测试内容
- JVM的对象和堆