修复ILPlotCube中的颜色级别(Z轴)。 (ILNumerics)

时间:2014-06-16 05:02:35

标签: colors plot limit axis ilnumerics

我想在玩家中展示一些情节。我想用相同的Z轴刻度显示它,因此颜色会自动改变(而不是最小值和最大值)。这是我的功能。

    private void PlaySaturationButton_Click(object sender, EventArgs e)
    {
        float Zmin = (float) Sw.Min();
        float Zmax = (float) Sw.Max();

        for (int i = 1; i < n_time; i++)
        {
            var scene = new ILScene();
            var plotCube = scene.Add(new ILPlotCube(twoDMode: false));


            plotCube.Limits.ZMin = Zmin;
            plotCube.Limits.ZMax = Zmax;
            plotCube.AspectRatioMode = AspectRatioMode.MaintainRatios;

            ILColormap cm = new ILColormap(Colormaps.Jet);
            ILArray<float> data = cm.Data;

            plotCube.Add(new ILSurface(ILMath.tosingle(Sw[":;:;" + (i - 1) + ""])){
                    Wireframe = { Color = Color.FromArgb(50, Color.LightGray)},
                    Colormap = new ILColormap(data),
                    Children = { new ILColorbar()}}
                    );

            SaturationilPanel.Scene = scene;
            SaturationilPanel.Refresh();
            System.Threading.Thread.Sleep(50);
        }
    }

但它给我错误的答案。在这个函数中,min&amp;最大色彩水平仍在变化。颜色本身保持静止。我的错误在哪里?

更新

enter image description here

正如我们在上面的图片中看到的,有一个名为&#34; play&#34;的按钮。当我们单击该按钮时,它将执行我之前描述的功能。我希望通过&#34;重新绘制&#34;来查看数据的变化。每帧的数据。

我想,如果我为每个帧调整相同数量的极限Z(最大值和最小值)值,它也会更新色标。我读到这篇文章时似乎错了:Same color bar for multiple surfaces in ILNumerics PlotCubehttp://ilnumerics.net/managing-colormaps.html。似乎色标与ILPlotCube的Z标度没有直接关系。这不对吗?

然而,我仍然在努力。我还没有得到关于ILNumerics着色的概念。

我现在想要达到的目标是,我希望每帧都有相同色阶的照片。

1 个答案:

答案 0 :(得分:0)

不是在每个处理程序调用中重新创建表面,而是应该重用它!即使它与您的问题无关,与重复使用曲面相比,娱乐活动极其缓慢。

为了更新曲面并使其始终使用相同的数据范围,您可以这样做:

ilPanel1.Scene.First<ILSurface>().UpdateColormapped(A, dataRange: Tuple.Create(-1f, 1f)); 

datarange指定用于将数据值映射到colormap颜色的单个数据范围。默认情况下,数据的最小值和最大值将映射到色彩映射的下端和上端。 datarange让您有机会覆盖此内容并改为使用个别限制。

为了使多个曲面共享相同的颜色,基于相同的颜色图,需要为每个曲面提供datarange的相同值。