X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flanguage%2Fstats%2Fexamine.c;h=ea1b5dba19d3ba23fe83674605f41bca9dee621f;hb=0b0ca44889e637251cb5f2dbf3c7fdc4ec8b9bd7;hp=a20396397d74d87def5a0181dbc30502079b8ab6;hpb=bd156adaff5b7c1bbe48b5c64006ead58d9a37d6;p=pspp diff --git a/src/language/stats/examine.c b/src/language/stats/examine.c index a20396397d..ea1b5dba19 100644 --- a/src/language/stats/examine.c +++ b/src/language/stats/examine.c @@ -1,6 +1,6 @@ /* PSPP - a program for statistical analysis. - Copyright (C) 2012 Free Software Foundation, Inc. + Copyright (C) 2012, 2013 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -129,9 +129,9 @@ struct examine size_t n_percentiles; bool npplot; - bool histogram; + bool histogramplot; bool boxplot; - bool spreadlevel; + bool spreadlevelplot; int sl_power; enum bp_mode boxplot_mode; @@ -304,13 +304,19 @@ show_boxplot_grouped (const struct examine *cmd, int iact_idx) ds_init_empty (&label); for (ivar_idx = 0; ivar_idx < iact->n_vars; ++ivar_idx) { + struct string l; const struct variable *ivar = iact->vars[ivar_idx]; const union value *val = case_data (c, ivar); - - ds_put_cstr (&label, var_to_string (ivar)); - ds_put_cstr (&label, " = "); - append_value_name (ivar, val, &label); - ds_put_cstr (&label, "; "); + ds_init_empty (&l); + + append_value_name (ivar, val, &l); + ds_ltrim (&l, ss_cstr (" ")); + + ds_put_substring (&label, l.ss); + if (ivar_idx < iact->n_vars - 1) + ds_put_cstr (&label, "; "); + + ds_destroy (&l); } boxplot_add_box (boxplot, es[v].box_whisker, ds_cstr (&label)); @@ -1521,7 +1527,7 @@ update_n (const void *aux1, void *aux2 UNUSED, void *user_data, int v; const struct examine *examine = aux1; struct exploratory_stats *es = user_data; - + for (v = 0; v < examine->n_dep_vars; v++) { struct ccase *outcase ; @@ -1578,7 +1584,7 @@ calculate_n (const void *aux1, void *aux2 UNUSED, void *user_data) struct casereader *reader; struct ccase *c; - if (examine->histogram) + if (examine->histogramplot) { /* Sturges Rule */ double bin_width = fabs (es[v].minimum - es[v].maximum) @@ -1795,12 +1801,10 @@ run_examine (struct examine *cmd, struct casereader *input) categoricals_set_payload (cmd->cats, &payload, cmd, NULL); - if (cmd->id_idx == -1) + if (cmd->id_var == NULL) { struct ccase *c = casereader_peek (input, 0); - assert (cmd->id_var == NULL); - cmd->id_idx = case_get_value_cnt (c); input = casereader_create_arithmetic_sequence (input, 1.0, 1.0); @@ -1850,13 +1854,13 @@ run_examine (struct examine *cmd, struct casereader *input) } } - if (cmd->histogram) + if (cmd->histogramplot) show_histogram (cmd, i); if (cmd->npplot) show_npplot (cmd, i); - if (cmd->spreadlevel) + if (cmd->spreadlevelplot) show_spreadlevel (cmd, i); if (cmd->descriptives) @@ -1907,10 +1911,10 @@ cmd_examine (struct lexer *lexer, struct dataset *ds) examine.dep_excl = MV_ANY; examine.fctr_excl = MV_ANY; - examine.histogram = false; + examine.histogramplot = false; examine.npplot = false; examine.boxplot = false; - examine.spreadlevel = false; + examine.spreadlevelplot = false; examine.sl_power = 0; examine.dict = dataset_dict (ds); @@ -2145,11 +2149,11 @@ cmd_examine (struct lexer *lexer, struct dataset *ds) } else if (lex_match_id (lexer, "HISTOGRAM")) { - examine.histogram = true; + examine.histogramplot = true; } else if (lex_match_id (lexer, "SPREADLEVEL")) { - examine.spreadlevel = true; + examine.spreadlevelplot = true; examine.sl_power = 0; if (lex_match (lexer, T_LPAREN)) { @@ -2162,13 +2166,13 @@ cmd_examine (struct lexer *lexer, struct dataset *ds) } else if (lex_match_id (lexer, "NONE")) { - examine.histogram = false; + examine.histogramplot = false; examine.npplot = false; examine.boxplot = false; } else if (lex_match (lexer, T_ALL)) { - examine.histogram = true; + examine.histogramplot = true; examine.npplot = true; examine.boxplot = true; }