#ifndef CHART_H
#define CHART_H
+#include <config.h>
#include <stdio.h>
-#include <plot.h>
+#include <gsl/gsl_histogram.h>
#include "var.h"
+#ifndef NO_CHARTS
+#include <plot.h>
+#endif
+
/* Array of standard colour names */
extern const char *data_colour[];
struct chart {
+#ifndef NO_CHARTS
plPlotter *lp ;
plPlotterParams *pl_params;
+#else
+ void *lp;
+#endif
+ char *filename;
/* The geometry of the chart
See diagram at the foot of this file.
char fill_colour[10];
-};
+ /* Stuff Particular to Cartesians (and Boxplots ) */
+ double ordinate_scale;
+ double abscissa_scale;
+ double x_min;
+ double x_max;
+ double y_min;
+ double y_max;
+};
-int chart_initialise(struct chart *ch);
-void chart_finalise(struct chart *ch);
+struct chart * chart_create(void);
+void chart_submit(struct chart *ch);
+double chart_rounded_tick(double tick);
+void chart_write_xlabel(struct chart *ch, const char *label);
+void chart_write_ylabel(struct chart *ch, const char *label);
-void chart_write_title(struct chart *ch,
- const char *title);
+void chart_write_title(struct chart *ch, const char *title, ...);
enum tick_orientation {
TICK_ABSCISSA=0,
};
-void draw_histogram(struct chart *ch,
- const struct variable *v,
- const char *title,
- struct normal_curve *norm,
- int show_normal);
+void histogram_write_legend(struct chart *ch, const struct normal_curve *norm);
+
+
+/* Plot a gsl_histogram */
+void histogram_plot(const gsl_histogram *hist, const char *factorname,
+ const struct normal_curve *norm, short show_normal);
+
+
+/* Create a gsl_histogram and set it's parameters based upon
+ x_min, x_max and bins.
+ The caller is responsible for freeing the histogram.
+*/
+gsl_histogram * histogram_create(double bins, double x_min, double x_max) ;
+
+
+
+
+
+struct slice {
+ const char *label;
+ double magnetude;
+};
+
+
+
+
+/* Draw a piechart */
+void piechart_plot(const char *title,
+ const struct slice *slices, int n_slices);
+
+void draw_scatterplot(struct chart *ch);
+
+
+void draw_lineplot(struct chart *ch);
+
+
+/* Set the scale on chart CH.
+ The scale extends from MIN to MAX .
+ TICK is the approximate number of tick marks.
+*/
+
+void chart_write_xscale(struct chart *ch,
+ double min, double max, int ticks);
+
+void chart_write_yscale(struct chart *ch,
+ double min, double max, int ticks);
+
+
+void chart_datum(struct chart *ch, int dataset, double x, double y);
+
+struct metrics;
+
+void boxplot_draw_boxplot(struct chart *ch,
+ double box_centre,
+ double box_width,
+ struct metrics *m,
+ const char *name);
-void draw_piechart(struct chart *ch, const struct variable *v);
+void boxplot_draw_yscale(struct chart *ch , double y_max, double y_min);
-void draw_scatterplot(struct chart *ch, const char *title,
- const char *xlabel, const char *ylabel);
+enum CHART_DIM
+ {
+ CHART_DIM_X,
+ CHART_DIM_Y
+ };
-void draw_lineplot(struct chart *ch, const char *title,
- const char *xlabel, const char *ylabel);
+void chart_line(struct chart *ch, double slope, double intercept,
+ double limit1, double limit2, enum CHART_DIM limit_d);
#endif