Scilab - 仅针对一组特定功能的图例

Scilab - Legend ONLY for a specific set of functions

我想使用 xfpoly 生成边界并使用 xs2pdf 保存它们。然后我想在这些边界内显示 2 个函数的图,为这些函数添加图例并再次保存图像。

我的代码如下...

clear; clc; xdel(winsid());    

t = -2:0.01:2;
x_1 = t.^2; x_2 = t.^4;

xfpoly([-3 -2 -2 -3], [0 0 16 16], color('grey'));
ax = gca(); 
ax.auto_clear = 'off'; ax.data_bounds = [-3, 0; 3, 3];
ax.box = 'on'; 
ax.axes_visible = ['on','on','off']; ax.tight_limits = ['on','on','off'];
xfpoly([2 3 3 2], [0 0 16 16], color('grey'));
xfpoly([-1 1 1 -1], [1 1 16 16], color('grey'));

xs2pdf(gcf(), 'fig_1');

plot2d(t, [x_1', x_2'], [color('green'), color('red')]);
legend(['t^2'; 't^4']);
leg_ent = gce(); 
leg_ent.text = ['';'';'';'t^2'; 't^4']

xs2pdf(gcf(), 'fig_2');

你想要这样的东西吗?

clear;
clc;   

t = -2:0.01:2;
x_1 = t.^2; x_2 = t.^4;

scf(0);
clf(0);
//plot the curves first to make legend easier
plot2d(t, [x_1', x_2'], [color('green'), color('red')]);
legend(['t^2'; 't^4']);   //the first two elements are the curves, so no neet to modify
ax = gca(); 
ax.auto_clear = 'off';
ax.data_bounds = [-3, 0; 3, 3];
ax.box = 'on'; 

xfpoly([-3 -2 -2 -3], [0 0 3 3], color('grey'));
xfpoly([2 3 3 2], [0 0 3 3], color('grey'));
xfpoly([-1 1 1 -1], [1 1 3 3], color('grey'));


scf(1);
clf(1);
xfpoly([-3 -2 -2 -3], [0 0 3 3], color('grey'));  //ymax sholud be 3, not 16
xfpoly([2 3 3 2], [0 0 3 3], color('grey'));
xfpoly([-1 1 1 -1], [1 1 3 3], color('grey'));
ax = gca(); 
ax.auto_clear = 'off';
ax.data_bounds = [-3, 0; 3, 3];
ax.box = 'on'; 

使用 pause 命令将我带到这个解决方案:

clear; clc; xdel(winsid());    

t = -2:0.01:2;
x_1 = t.^2; x_2 = t.^4;

plot2d(t, [x_1', x_2'], [color('green'), color('red')]); plot_1 = gce();
legend(['t^2'; 't^4']); leg_1 = gce(); 
plot_1.visible = 'off'; leg_1.visible = 'off';

xfpoly([-3 -2 -2 -3], [0 0 16 16], color('grey'));
xfpoly([2 3 3 2], [0 0 16 16], color('grey'));
xfpoly([-1 1 1 -1], [1 1 16 16], color('grey'));
ax = gca(); 
ax.box = 'on'; 

xs2pdf(gcf(), 'fig_1');
// pause
plot_1.visible = 'on'; leg_1.visible = 'on';
xs2pdf(gcf(), 'fig_2');