% --- start of displayed preamble in the book ---
input graph
numeric r,last; path c,w;
r:=5; c:=fullcircle scaled 2r; last:=0.0;
def wedge (expr lang,value,perc) =
 numeric current,n,half,xoff,yoff;picture p;
 n:=perc*3.6;
 current:=last+n; half:=last+(n/2);
 w:=buildcycle((0,0)--(2r,0) rotated last,c, (2r,0)--(0,0)
                                           rotated current);
 gfill w withcolor (0,0.8-(perc/100),0);
 gdraw w;
 if perc > 5: p=lang infont defaultfont scaled defaultscale;
   glabel(image(unfill bbox p; draw p),3/4r*dir(half));
 fi;
 last:=current;
enddef;
% --- end of displayed preamble in the book ---
% graphic converted to gray in book using 'color2gray'
defaultfont:="ptmr8r";
warningcheck:=0;
beginfig(1)
draw begingraph(3in,3in);
 defaultscale:=0.7;
 gdata ("langs.dat",c, wedge(c1, (scantokens c2),
                                 (scantokens c3)););
 autogrid(,);
 frame withcolor white;
endgraph scaled 0.7;
endfig;
end;