func Test_data3d(tst *testing.T) { // data prob := "CF9" dat := PFdata(prob) X := utl.DblsGetColumn(0, dat) Y := utl.DblsGetColumn(1, dat) Z := utl.DblsGetColumn(2, dat) // figure plt.SetForEps(1.0, 400) plt.Plot3dPoints(X, Y, Z, "s=0.05, color='r', facecolor='r', edgecolor='r', xlbl='$f_1$', ylbl='$f_2$', zlbl='$f_3$'") plt.AxisRange3d(0, 1, 0, 1, 0, 1) plt.Camera(10, -135, "") //plt.Camera(10, 45, "") plt.SaveD("/tmp/goga", io.Sf("cec09-%s.eps", prob)) // interactive if false { r := 0.005 scn := vtk.NewScene() P := vtk.Spheres{X: X, Y: Y, Z: Z, R: utl.DblVals(len(X), r), Color: []float64{1, 0, 0, 1}} P.AddTo(scn) scn.Run() } }
func py_plot3(iOva, jOva, kOva int, opt *goga.Optimiser, plot_solution func(), onlyFront0, twice bool) { // results var X, Y, Z []float64 if onlyFront0 { for _, sol := range opt.Solutions { if sol.Feasible() && sol.FrontId == 0 { X = append(X, sol.Ova[iOva]) Y = append(Y, sol.Ova[jOva]) Z = append(Z, sol.Ova[kOva]) } } } else { X, Y, Z = make([]float64, opt.Nsol), make([]float64, opt.Nsol), make([]float64, opt.Nsol) for i, sol := range opt.Solutions { X[i], Y[i], Z[i] = sol.Ova[iOva], sol.Ova[jOva], sol.Ova[kOva] } } // plot plt.SetForEps(1.0, 400) plot_solution() plt.Plot3dPoints(X, Y, Z, "s=7, color='r', facecolor='r', edgecolor='r', preservePrev=1, xlbl='$f_0$', ylbl='$f_1$', zlbl='$f_2$'") e, a := 10.0, 45.0 if opt.RptName == "DTLZ2c" { e, a = 15, 30 } //plt.Camera(e, a, "") //plt.AxDist(11.0) //plt.AxisRange3d(opt.RptFmin[iOva], opt.RptFmax[iOva], opt.RptFmin[jOva], opt.RptFmax[jOva], opt.RptFmin[kOva], opt.RptFmax[kOva]) //plt.SaveD("/tmp/goga", io.Sf("py_%s_A.eps", opt.RptName)) if twice { e, a = 10, -45 if opt.RptName == "DTLZ2c" { e, a = 10, -45 } plt.Camera(e, a, "") plt.AxDist(11.0) plt.AxisRange3d(opt.RptFmin[iOva], opt.RptFmax[iOva], opt.RptFmin[jOva], opt.RptFmax[jOva], opt.RptFmin[kOva], opt.RptFmax[kOva]) plt.SaveD("/tmp/goga", io.Sf("py_%s_B.eps", opt.RptName)) } }