[Scilab-users] Format legends of a graph as a 2D table

CRETE Denis denis.crete at thalesgroup.com
Fri Feb 22 18:46:53 CET 2013


Hello,
For graphic window with a large number of curves, the problem is in displaying legends: using the legend function, the last entries are not visible.
The solution I am trying to code is the following:
First split the legends in 2 columns with approximately the same number of entries for each column.
After placing the first column on the graphics, automatically place the 2nd column side by side with the first one,
i.e. at a position which depends on the length of the strings in the first column, using move.
xstringl gives the length of one of the legends: PROBLEM = it is approximate and most probably not the easiest way...

nc=40;
names_legend='legend_'+string(1:nc);
nc1=round(nc/2); //nc is the number of curves: split in 2
legends(names_legend(1:nc1),1:nc1,font_size=3,opt="ul");// put first column of legends
a1=gca();
// Get the width of the text
tw=0;
for i=1:nc,
                    tl=xstringl(0,0,names_legend(i),a1.font_style,a1.font_size);
                    tw=max(tw,tl(3));
end;
legends(names_legend((nc1+1):nc),(nc1+1):nc,font_size=3,opt="ul"); // 2nd column on top of first
move(a1.children(1),[tw*0.7513907+0.0585762,0]); //Move it horizontally (along x-axis);

As a matter of fact, I don't know why I need to apply some linear relationship between tw and the value of the horizontal shift... This is awkward! I am unable to find an easy way to get the width of the box of the first column of the legend.

Thank you for any help.
Denis

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.scilab.org/pipermail/users/attachments/20130222/95e2b5f0/attachment.htm>


More information about the users mailing list