HISTOGRAMS: Fix bin width problems on large numbers of bins
[pspp] / src / language / stats / frequencies.q
index d7754220fa4efe7fc2a4861ef4a806fb9deb29b8..b5ad8c47793eef15064a887023eead28732c8845 100644 (file)
@@ -499,14 +499,17 @@ postcalc (struct frq_proc *frq, const struct dataset *ds)
 
          histogram = freq_tab_to_hist (frq, &vf->tab, vf->var);
 
-          chart_item_submit (histogram_chart_create (
+         if ( histogram)
+           {
+             chart_item_submit (histogram_chart_create (
                                histogram->gsl_hist, var_to_string(vf->var),
                                vf->tab.valid_cases,
                                d[FRQ_MEAN],
                                d[FRQ_STDDEV],
                                frq->hist->draw_normal));
 
-         statistic_destroy (&histogram->parent);
+             statistic_destroy (&histogram->parent);
+           }
        }
 
       if (frq->pie)
@@ -1139,9 +1142,12 @@ freq_tab_to_hist (const struct frq_proc *frq, const struct freq_tab *ft,
   /* Freedman-Diaconis' choice of bin width. */
   iqr = calculate_iqr (frq);
   bin_width = 2 * iqr / pow (valid_freq, 1.0 / 3.0);
-  bin_width = chart_rounded_tick (bin_width);
 
   histogram = histogram_create (bin_width, x_min, x_max);
+
+  if ( histogram == NULL)
+    return NULL;
+
   for (i = 0; i < ft->n_valid; i++)
     {
       const struct freq *f = &ft->valid[i];