Как я могу иметь отдельные цветовые карты для двух подграфиков в Scilab?

У меня есть два подзаголовка, созданные с помощью серфинга, поскольку обе отображаемые переменные имеют очень разные поведения и масштабы, я хотел бы построить их с независимыми цветовыми картами. Я попытался закодировать его, как показано ниже, но последняя цветовая карта применяется ко всему. Как я могу сделать так, чтобы каждый подзаговор получил другую цветовую карту? Изображение, которое я сейчас получаю с помощью этого кода, — это.

---- START OF CODE BLOCK ----

f0=scf(0);
subplot(1,3,1);
surf(plotPlan(:,:),N(:,:));
f0.color_map = jetcolormap(32);
xtitle("NUTRIENT SPATIAL DYNAMICS","NBY","NBX","Z");
set(gca(),"auto_clear","off");

subplot(1,3,2);
surf(plotPlan(:,:),A(:,:));
f0.color_map = oceancolormap(32);
xtitle("ALGAE SPATIAL DYNAMICS","NBY","NBX","Z");
set(gca(),"auto_clear","off");
...

---- END OF CODE BLOCK ----

person Renata Dis    schedule 17.12.2015    source источник
comment
вы пробовали gca() или gce()?   -  person spoorcc    schedule 17.12.2015
comment
Я пробовал оба, но ни один не работал. Первый не работал, потому что он обрабатывает оси, а не поверхность... Второй, 'gce', выдает мне ошибку, говорящую, что 'color_map' - это свойство, которое не существует для этого дескриптора. Вот как я пытался закодировать это. fig=scf(1); subplot(1,3,1); surf(plotPlan(:,:), N(:,:)); e=gce(); figA=e.children(1); figA.color_map=jetcolormap(32); Есть ли другой способ сделать это? Кажется, должен быть простой способ сделать это, которого я еще не нашел.   -  person Renata Dis    schedule 17.12.2015


Ответы (1)


Свойство color_map прикреплено к фигуре, поэтому невозможно установить цветовую карту для каждой оси. Однако можно делать то, что вы хотите, следуя приведенному ниже примеру.

function c=colorindex(z,ncolor)
  //compute the color index for each surface value
  mn=min(z);mx=max(z)
  c=round((z-mn)/(mx-mn)*(ncolor-1))+1
endfunction

//first surface
t=linspace(0,2*%pi,30);
z1=sin(t)'*cos(t);

//second one
z2=z1.*z1;

f=scf(0);clf;
defined a colormap with the catenation of the 2 requested colormaps
f.color_map=[jetcolormap(32);oceancolormap(32)];
//draw the first surface with the first part of the colormap
subplot(211);surf(z1,colorindex(z1,32),"ColorDataMapping","direct")
//draw the second surface with the second part of the colormap
subplot(212);surf(z2,colorindex(z2,32)+32,"ColorDataMapping","direct")
person user5694329    schedule 18.12.2015
comment
Спасибо за ответ, приятель. Действительно, пример работает с моими данными, но очень усложняет выполнение каких-либо других действий в окне графика (например, установка отдельных диапазонов масштаба по умолчанию для обоих наборов данных). Я решил отобразить каждый в отдельном окне, чтобы я мог также изменить их параметры и изучить результаты еще немного. Но еще раз спасибо за помощь! - person Renata Dis; 18.12.2015