X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Foutput%2Fcharts%2Fplot-hist.c;h=08a857af9e1d1860135dc1e01c4907aedc5ea002;hb=f5c108becd49d78f4898cab11352291f5689d24e;hp=a500d5bf627933b125a39cbfbbd9a9766970ca8d;hpb=a19b858e0ac3c69e4a28c0ca6d8674427268a863;p=pspp-builds.git diff --git a/src/output/charts/plot-hist.c b/src/output/charts/plot-hist.c index a500d5bf..08a857af 100644 --- a/src/output/charts/plot-hist.c +++ b/src/output/charts/plot-hist.c @@ -1,6 +1,5 @@ /* PSPP - computes sample statistics. Copyright (C) 2004 Free Software Foundation, Inc. - Written by John Darrington This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as @@ -59,7 +58,7 @@ histogram_write_legend(struct chart *ch, const struct normal_curve *norm) pl_fmove_r(ch->lp,ch->legend_left,ch->data_bottom + ch->font_size * 1.5 * 2); pl_alabel_r(ch->lp,0,'b',buf); - pl_restorestate_r(ch->lp); + pl_restorestate_r(ch->lp); } static void hist_draw_bar(struct chart *ch, const gsl_histogram *hist, int bar); @@ -68,7 +67,7 @@ static void hist_draw_bar(struct chart *ch, const gsl_histogram *hist, int bar); static void hist_draw_bar(struct chart *ch, const gsl_histogram *hist, int bar) { - if ( !ch ) + if ( !ch ) return ; @@ -86,12 +85,12 @@ hist_draw_bar(struct chart *ch, const gsl_histogram *hist, int bar) assert( upper >= lower); - height = gsl_histogram_get(hist, bar) * + height = gsl_histogram_get(hist, bar) * (ch->data_top - ch->data_bottom) / gsl_histogram_max_val(hist); pl_savestate_r(ch->lp); pl_move_r(ch->lp,ch->data_left, ch->data_bottom); - pl_fillcolorname_r(ch->lp, ch->fill_colour); + pl_fillcolorname_r(ch->lp, ch->fill_colour); pl_filltype_r(ch->lp,1); @@ -120,7 +119,7 @@ histogram_plot(const gsl_histogram *hist, { int i; int bins; - + struct chart *ch; ch = chart_create(); @@ -141,14 +140,14 @@ histogram_plot(const gsl_histogram *hist, chart_write_yscale(ch, 0, gsl_histogram_max_val(hist), 5); - for ( i = 0 ; i < bins ; ++i ) + for ( i = 0 ; i < bins ; ++i ) hist_draw_bar(ch, hist, i); histogram_write_legend(ch, norm); if ( show_normal ) { - /* Draw the normal curve */ + /* Draw the normal curve */ double d ; double x_min, x_max, not_used ; @@ -162,16 +161,16 @@ histogram_plot(const gsl_histogram *hist, assert(range == x_max - not_used); abscissa_scale = (ch->data_right - ch->data_left) / (x_max - x_min); - ordinate_scale = (ch->data_top - ch->data_bottom) / + ordinate_scale = (ch->data_top - ch->data_bottom) / gsl_histogram_max_val(hist) ; - pl_move_r(ch->lp, ch->data_left, ch->data_bottom); - for( d = ch->data_left; - d <= ch->data_right ; + pl_move_r(ch->lp, ch->data_left, ch->data_bottom); + for( d = ch->data_left; + d <= ch->data_right ; d += (ch->data_right - ch->data_left) / 100.0) - { - const double x = (d - ch->data_left) / abscissa_scale + x_min ; - const double y = norm->N * range * + { + const double x = (d - ch->data_left) / abscissa_scale + x_min ; + const double y = norm->N * range * gsl_ran_gaussian_pdf(x - norm->mean, norm->stddev); pl_fcont_r(ch->lp, d, ch->data_bottom + y * ordinate_scale);