Инвертировать цветовую карту в ILNumerics

Можно ли инвертировать палитру в ILNumerics? В данный момент я использую карту цветов Jet и хотел бы инвертировать ее так, чтобы синий был вверху, а красный внизу, как я могу это сделать, не инвертируя значение z всех точек?

Это мой код:

    //p are the points im plotting
    ILSurface surface = new ILSurface(p, colormap: Colormaps.Jet);

Что производит это:

Поверхностный график


person bolt19    schedule 06.02.2014    source источник


Ответы (1)


Вы можете получить текущую палитру с поверхности (или из экземпляра ILColormap) и просто инвертировать позиции отдельных элементов сопоставления цветов в палитре. В моем примере первая строка цветовых данных перезаписывается их зеркальным видом:

private void ilPanel1_Load(object sender, EventArgs e) {
    ILArray<float> A = ILSpecialData.sincf(40, 50);
    ilPanel1.Scene.Add(new ILPlotCube(twoDMode: false) {
        new ILSurface(A) { new ILColorbar() }
    });

    // fetch surface
    var surface = ilPanel1.Scene.First<ILSurface>();
    // fetch current colormap data
    ILArray<float> cmdata = surface.Colormap.Data;
    // invert their positions
    cmdata[":;0"] = cmdata["end:-1:0;:"];
    // make new colormap and assign
    surface.Colormap = new ILColormap(cmdata);
    // configure after all modifications
    surface.Configure();
}

Затем данные cmd используются для создания новой цветовой карты, которая затем назначается поверхности.

См. соответствующую документацию здесь: http://ilnumerics.net/managing-colormaps.html

person numbers303    schedule 06.02.2014
comment
Идеально именно то, что я искал, спасибо! :D - person bolt19; 07.02.2014