本人在學習使用 plotly 的contour plots 製做的時候,發現利用這個表格製做波的干涉模擬方面有很不錯的效果,由於以前被各類波動方程和振動方程教育了好久,因此就用波函數來開動,下面分享代碼,供你們參考。(我用 java 寫的代碼模擬的波函數的測試數據)html
下面是 plotly 的所有代碼,裏面包含了兩種生成 contour plots 圖表的方式,一個生成的是單個圖表,可是帶着等高線,因此被我放棄了。另一個生成是圖表矩陣,我選的row=1,cols=1的模式。java
#!/usr/bin/python # coding=utf-8 import plotly.plotly from plotly.graph_objs import * import plotly.graph_objs as go import plotly.tools as tool z = [] with open("/Users/Vicky/Documents/workspace/fission/long/intervene.log") as apidata: for i in apidata: data = i.split("\n")[0].split(",") z.append(data) ''' #這是單獨一個表格的狀況,但沒找到去掉等高線的方法 data = Data([ Contour( z=z, contours = dict( coloring="heatmap" ) ) ]) plotly.offline.plot(data,filename="3333.html") ''' data = { 'z': z, 'connectgaps': True, 'type': 'heatmap', 'zsmooth': 'best', 'showscale': True } fig = tool.make_subplots(rows=1, cols=1) fig.append_trace(data, 1, 1) plotly.offline.plot(fig,filename= "3333.html")
下面是 java 生成數據的代碼:python
package practise; import java.awt.Point; import java.util.ArrayList; import java.util.List; import source.SourceCode; public class Intervene extends SourceCode { public List<List<Double>> data = new ArrayList<>(); public static void main(String[] args) { Intervene intervene = new Intervene(); intervene.testDemo001(); } public void testDemo001() { Point point1 = new Point(50, 50); Point point2 = new Point(150, 50); int lamda = 6; for (int i = 0; i < 100; i++) {// y 軸 List<Double> distance = new ArrayList<>(); for (int j = 0; j < 200; j++) {// x 軸 Point point = new Point(j, i); double x = point.distance(point1) % lamda / lamda; double y = point.distance(point2) % lamda / lamda; double xx = Math.sin(x * 2 * Math.PI); double yy = Math.sin(y * 2 * Math.PI); distance.add(xx + yy); } data.add(distance); } StringBuffer content = new StringBuffer(); int size = data.size(); for (int i = 0; i < size; i++) { String text = data.get(i).toString(); text = text.substring(1, text.length() - 1); if (i == 0) content.append(text); content.append(LINE + text); } logLong("intervene.log", content.toString()); } }
下面是生成圖表:編程