Scilab: добавить легенду для поверхностного сюжета

Я хотел бы добавить легенду к поверхностному сюжету. Я пытался сделать так:

X=[0:0.3:2*%pi];   //example data
[x,y]=ndgrid(X,X);
z1=sin(X')*cos(X);
z2=z1/2;
z3=z1/3;
figure=scf();
surf(x,y,z1);
surf(x,y,z2);
surf(x,y,z3);
axes=figure.children(1);
axes.children(1).foreground=color(0,0,0);
axes.children(2).foreground=color(0,0,0);
axes.children(3).foreground=color(255,0,0);
axes.children(1).color_flag=0;
axes.children(2).color_flag=0;
axes.children(3).color_flag=0;
axes.children(1).color_mode=color(0,255,0);
axes.children(2).color_mode=color(0,0,255);
axes.children(3).color_mode=0;
legend(['z1','z1 divided by 2','z1 divided by 3'],opt=2,font_size=2);

Я получаю следующее сообщение об ошибке:

 !--error 10000 
legend : Neither handle of type 'Polyline' can be found.

Если это невозможно сделать с базовой версией Scilab, не могли бы вы посоветовать мне несколько библиотек, которые Scilab разрешает делать это.

Спасибо за вашу помощь.

1 ответ

Решение

Легенда не возможна для поверхностных участков

Легенды предназначены только для графиков plot2dx, как указано в документации к свойствам легенды:

Эта сущность определяет параметры для легенд, нарисованных под графиками plot2dx или созданных функцией титров.

альтернативы

Вы можете просто добавить заголовок, используя xtitle

xtitle('z1,z1 div by2, z2 div by 3');

Вы можете нарисовать прямоугольник, используя uicontrol, и стилизовать его, используя uicontrol_properties:

fig = gcf();
uicontrol(fig, "style", "text", ...
               "string", "<html>z1<br>z1/2<br>z1/3</html>", ...
               "position",[100 100 100 100], ...
               "fontsize",15);
Другие вопросы по тегам