load (draw)$ kreisdiagramm (L, nr) := block ([i], gesamt: apply ("+", map (lambda ([x], x[1]), L)), w : append ([0], map (lambda ([x], x[1] / gesamt * 360), L)), tmpliste : [], winkel_summe : 0, for i : 1 while i < length (w) do block ([], winkel_summe : winkel_summe + w[i], alpha : winkel_summe + w[i+1] / 2, x : 1.1 * cos (alpha / 360 * 2 * %pi), y : 1.1 * sin (alpha / 360 * 2 * %pi), if (x > 0) then la : left else la : right, if (nr = 1) then xc : 0 else xc : 2.5, tmpliste : append (tmpliste, [ color = black, fill_color = L[i][3], label_alignment = la, label ([string (L[i][2]), x, y]), ellipse (xc, 0, 1, 1, winkel_summe, w[i+1]) ] ) ), tmpliste : append (tmpliste, [ points_joined = true, points ([[-1+xc,0],[1+xc,0]]), points ([[xc,-1],[xc,1]]) ] ), return (tmpliste) )$ liste1 : [[30, " ", "blue"], [30, " ", "red"], [30, " ", "red"], [30, " ", "blue"]]$ liste2 : [[30, " ", "white"], [30, " ", "green"], [30, " ", "green"], [30, " ", "white"]]$ segmentenliste1 : kreisdiagramm (liste1, 1)$ segmentenliste2 : kreisdiagramm (liste2, 2)$ draw2d ( file_name = "34_2anteil", terminal = png, dimensions = [600, 300], user_preamble = ["set noborder"], xtics = false, ytics = false, proportional_axes = xy, /* xrange = [-1.5, 1.5], */ yrange = [-1.5, 1.5], nticks = 200, line_width = 2, segmentenliste1, segmentenliste2 )$