From: Friedrich Beckmann Date: Fri, 18 Mar 2022 23:11:05 +0000 (+0100) Subject: bug #62189: Fixed clipped numbers in histogram legend X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?p=pspp;a=commitdiff_plain;h=42e4b0377c6f308349440a5cdcab96339ec9079b bug #62189: Fixed clipped numbers in histogram legend I modified the legend rendering to avoid the clipping of mean and standard deviation in the legend of the histogram plot. In addition I changed the number print format to also show reasonable numbers for small values. fixed: https://savannah.gnu.org/bugs/index.php?62198 --- diff --git a/src/output/charts/plot-hist-cairo.c b/src/output/charts/plot-hist-cairo.c index f866342809..c8f604af69 100644 --- a/src/output/charts/plot-hist-cairo.c +++ b/src/output/charts/plot-hist-cairo.c @@ -35,30 +35,40 @@ static void histogram_write_legend (cairo_t *cr, const struct xrchart_geometry *geom, double n, double mean, double stddev) { - double y = geom->axis[SCALE_ORDINATE].data_min; + double y = geom->axis[SCALE_ORDINATE].data_max - geom->font_size; cairo_save (cr); - if (n != SYSMIS) + if (mean != SYSMIS) { - char *buf = xasprintf (_("N = %.2f"), n); - cairo_move_to (cr, geom->legend_left, y); + char *buf = xasprintf (_("Mean")); + cairo_move_to (cr,geom->legend_left, y); xrchart_label (cr, 'l', 'b', geom->font_size, buf); - y += geom->font_size * 1.5; + y -= geom->font_size * 1.5; + free (buf); + buf = xasprintf ("%g", mean); + cairo_move_to (cr,geom->legend_left, y); + xrchart_label (cr, 'l', 'b', geom->font_size, buf); + y -= geom->font_size * 2.0; free (buf); } - if (mean != SYSMIS) + if (stddev != SYSMIS) { - char *buf = xasprintf (_("Mean = %.1f"), mean); - cairo_move_to (cr,geom->legend_left, y); + char *buf = xasprintf (_("Std Dev")); + cairo_move_to (cr, geom->legend_left, y); + xrchart_label (cr, 'l', 'b', geom->font_size, buf); + free (buf); + y -= geom->font_size * 1.5; + buf = xasprintf ("%g", stddev); + cairo_move_to (cr, geom->legend_left, y); xrchart_label (cr, 'l', 'b', geom->font_size, buf); - y += geom->font_size * 1.5; free (buf); + y -= geom->font_size * 2.0; } - if (stddev != SYSMIS) + if (n != SYSMIS) { - char *buf = xasprintf (_("Std. Dev = %.2f"), stddev); + char *buf = xasprintf (_("N = %.0f"), n); cairo_move_to (cr, geom->legend_left, y); xrchart_label (cr, 'l', 'b', geom->font_size, buf); free (buf);