Ask Your Question

Revision history [back]

You may use a too old version of SageMath: graphics_array had some issues that have been fixed in SageMath 8.9 (see Trac #27865). The following code works well with SageMath 9.0:

var('t')
C=[2.5, 1.7, 1, 0.7, 0.5, 0.2, 0, -0.2, -0.5, -0.8, -1, -2] # The values for c
Curves = [polar_plot(1+c*sin(t),0,t,2*pi, 
                     legend_label = '%s'%c.n(digits=2)) for c in C]
for g in Curves:
    g.set_legend_options(font_size = 8)
Array = graphics_array(((Curves[0],Curves[2], Curves[2], Curves[3]),
                     (Curves[4],Curves[5], Curves[6], Curves[7]),
                     (Curves[8],Curves[9], Curves[10], Curves[11])))
Array.show(figsize  = 9)

The font size is correctly taken into account. Note that the above code differs from yours by the set_legend_options method being called in a loop on all the graphics objects of the list Curves. In the original code, Curves was transformed into a list of outputs of this method, namely a list of None.