2014-02-06 1 views
1

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

Это мой код:

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

Который производит это:

Surface Plot

ответ

2

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

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(); 
} 

В cmdata будут впоследствии использованы для создания нового палитры, который чем назначен на поверхность.

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

+0

Совершенная именно то, что я искал спасибо! : D – bolt19