ILSurface绘图参数

时间:2013-11-03 20:26:07

标签: c# 3d matplotlib plot ilnumerics

我一直在ILSurface上绘制一个表面。 方案如下:

绘制不规则网格:

float[] x = new float[sizeX]; // filled with timestamps

float[] y = new float[sizeY]; // filled with values

float[,] z = new float[sizeX, sizeY]; // filled with values mapped by [x,y]

ILInArray<float> inX = ILMath.array(x);
ILInArray<float> inY = ILMath.array(y);
ILInArray<float> inZ = ILMath.meshgrid(inX * inY, inX, inY);

// how do i fill the inZ with z[,]?

ILRetArray<float> outMesh = ILMath.meshgrid(inX, inY, inZ, null, null);

plotCube.Add(new ILSurface(outMesh, null, null, null, null));

// plotCube already attached to the scene, and the scene with the ILPanel

ilPanel1.Refresh(); 

想要将其映射到数组中,以便可以在ILSurface上进行绘图。

我尝试了一些ILMath.meshgrid来填充ILInArray<double> ZXYArray但没有成功。

希望我已经清楚了。欢迎任何帮助。

感谢。

1 个答案:

答案 0 :(得分:1)

以下是一个简单的示例,说明如何使用ILNumerics绘制3D曲面并提供自定义X和Y范围。它期望使用ILNumerics定期设置Windows.Forms应用程序:

private void ilPanel1_Load(object sender, EventArgs e) {
    // define X and Y range
    ILArray<float> X = ILMath.vec<float>(-10.0, 0.1, 10.0);
    ILArray<float> Y = ILMath.vec<float>(-6.0, 0.1, 6.0);

    // compute X and Y coordinates for every grid point
    ILArray<float> YMat = 1; // provide YMat as output to meshgrid
    ILArray<float> XMat = ILMath.meshgrid(X, Y, YMat); // only need mesh for 2D function here

    // preallocate data array for ILSurface: X by Y by 3
    // Note the order: 3 matrix slices of X by Y each, for Z,X,Y coordinates of every grid point
    ILArray<float> A = ILMath.zeros<float>(Y.Length, X.Length, 3); 

    // fill in Z values (replace this with your own function / data!!)
    A[":;:;0"] = ILMath.sin(XMat) * ILMath.sin(YMat) * ILMath.exp(-ILMath.abs(XMat * YMat) / 5);
    A[":;:;1"] = XMat; // X coordinates for every grid point
    A[":;:;2"] = YMat; // Y coordinates for every grid point

    // setup the scene + plot cube + surface 
    ilPanel1.Scene = new ILScene() {
        new ILPlotCube(twoDMode: false) {
            new ILSurface(A) {
                UseLighting = true, 
                Children = { new ILColorbar() }
            }
        }
    };
}

它产生以下结果:

ILNumerics Surface Plot

以下是相同的示例as interactive Web Component

请注意定义网格点坐标的顺序。请参阅此处的文档:http://ilnumerics.net/surface-plots.html