## GogSeries GogSeries — A single data series. |

## Synopsis

                        GogSeries;
                        GogSeriesClass;
                        GogSeriesDesc;
                        GogSeriesDimDesc;
    enum                GogDimType;
    enum                GogMSDimType;
                        GogSeriesElement;
                        GogSeriesElementClass;
    enum                GogSeriesPriority;
    enum                GogSeriesFillType;
    void                gog_series_check_validity           (GogSeries *series);
    GogSeriesElement *  gog_series_get_element              (GogSeries const *series,
                                                             int index);
    GogSeriesFillType   gog_series_get_fill_type            (GogSeries const *series);
    GogSeriesFillType   gog_series_get_fill_type_from_combo (GogSeries const *series,
                                                             GtkComboBox *combo);
    GogDataset *        gog_series_get_interpolation_params (GogSeries const *series);
    GOData *            gog_series_get_name                 (GogSeries const *series);
    GList const  	 *    gog_series_get_overrides            (GogSeries const *series);
    GogPlot *           gog_series_get_plot                 (GogSeries const *series);
    unsigned            gog_series_get_xy_data              (GogSeries const *series,
                                                             double const **x,
                                                             double const **y);
    unsigned            gog_series_get_xyz_data             (GogSeries const *series,
                                                             double const **x,
                                                             double const **y,
                                                             double const **z);
    gboolean            gog_series_has_legend               (GogSeries const *series);
    gboolean            gog_series_is_valid                 (GogSeries const *series);
    int                 gog_series_map_XL_dim               (GogSeries const *series,
                                                             GogMSDimType ms_type);
    unsigned            gog_series_num_elements             (GogSeries const *series);
    void                gog_series_populate_fill_type_combo (GogSeries const *series,
                                                             GtkComboBox *combo);
    void                gog_series_set_XL_dim               (GogSeries *series,
                                                             GogMSDimType ms_type,
                                                             GOData *val,
                                                             GError **err);
    void                gog_series_set_dim                  (GogSeries *series,
                                                             int dim_i,
                                                             GOData *val,
                                                             GError **err);
    void                gog_series_set_fill_type            (GogSeries *series,
                                                             GogSeriesFillType fill_type);
    void                gog_series_set_index                (GogSeries *series,
                                                             int ind,
                                                             gboolean is_manual);
    void                gog_series_set_name                 (GogSeries *series,
                                                             GODataScalar *name_src,
                                                             GError **err);

## Object Hierarchy

      GObject
       +----GogObject
             +----GogStyledObject
                   +----GogSeries

      GObject
       +----GogObject
             +----GogStyledObject
                   +----GogSeriesElement

## Implemented Interfaces

GogSeries implements GOStyledObject and GogDataset.

GogSeriesElement implements GOStyledObject.

## Properties

      "fill-type"                gchar*                : Read / Write
      "has-legend"               gboolean              : Read / Write
      "interpolation"            gchar*                : Read / Write
      "interpolation-skip-invalid" gboolean              : Read / Write
      "index"                    gint                  : Read / Write

## Description

A GogSeries represents a data series that can be added to a GogPlot.

## Details

### GogSeries

    typedef struct _GogSeries GogSeries;

### GogSeriesClass

    typedef struct {
    	GogStyledObjectClass base;

    	gboolean		 has_interpolation;
    	gboolean		 has_fill_type;

    	GogSeriesFillType const *valid_fill_type_list;

    	GType			 series_element_type;

    	/* Virtuals */
    	void        (*dim_changed) (GogSeries *series, int dim_i);
    	unsigned    (*get_xy_data) (GogSeries const *series,
    	                            double const **x, double const **y);
    	GogDataset *(*get_interpolation_params) (GogSeries const *series);
    } GogSeriesClass;

GogStyledObjectClass `base`; |
gboolean `has_interpolation`; | supports interpolation.
gboolean `has_fill_type`; | `TRUE` if filling is supported.
GogSeriesFillType const *`valid_fill_type_list`; | list of supported GogSeriesFillType values.
GType `series_element_type`; | GType for the series element if supported.
`dim_changed` () | called when data changed for the series.
`get_xy_data` () | get X and Y data.
`get_interpolation_params` () | get interpolation parameters if any, only applies to constrained cubic spline interpolation.

### GogSeriesDesc

    typedef struct {
    	unsigned style_fields;
    	unsigned num_dim;
    	GogSeriesDimDesc const *dim;
    } GogSeriesDesc;

GogSeriesDimDesc const *`dim`; | dimensions descriptions.

### GogSeriesDimDesc

    typedef struct {
    	char const *name;
    	GogSeriesPriority priority;
    	gboolean		is_shared;
    	GogDimType		val_type;
    	GogMSDimType		ms_type;
    } GogSeriesDimDesc;

char const *`name`; | name.
GogSeriesPriority `priority`; | priority.
gboolean `is_shared`; | whether the dimension is shared among the series.
GogDimType `val_type`; | data type.
GogMSDimType `ms_type`; | data type for foreign formats.

### enum GogDimType

    typedef enum {
    	GOG_DIM_INVALID = -1,
    	GOG_DIM_LABEL = 0,
    	GOG_DIM_INDEX,
    	GOG_DIM_VALUE,
    	GOG_DIM_MATRIX,
    	GOG_DIM_TYPES
    } GogDimType;

Data types for plots.

`GOG_DIM_INVALID` | invalid should not occur.
`GOG_DIM_LABEL` | labels.
`GOG_DIM_INDEX` | indices.
`GOG_DIM_VALUE` | vector of values.
`GOG_DIM_MATRIX` | matrix of values.
`GOG_DIM_TYPES` | should not occur.

### enum GogMSDimType

    typedef enum {
    	GOG_MS_DIM_LABELS = 0,
    	GOG_MS_DIM_VALUES = 1,
    	GOG_MS_DIM_CATEGORIES = 2,
    	GOG_MS_DIM_BUBBLES = 3, /* undocumented */
    	GOG_MS_DIM_TYPES,
    	GOG_MS_DIM_ERR_plus1, /* we made it up */
    	GOG_MS_DIM_ERR_minus1, /* we made it up */
    	GOG_MS_DIM_ERR_plus2, /* we made it up */
    	GOG_MS_DIM_ERR_minus2, /* we made it up */
    	GOG_MS_DIM_START, /* we made it up for dropbars*/
    	GOG_MS_DIM_END, /* we made it up for dropbars */
    	GOG_MS_DIM_LOW, /* we made it up for hi-lo*/
    	GOG_MS_DIM_HIGH, /* we made it up for hi-lo */
    	GOG_MS_DIM_EXTRA1, /* we made it up for other uses */
    	GOG_MS_DIM_EXTRA2 /* we made it up for other uses */
    } GogMSDimType;

Data types classed according to what they become when exported to foreign formats.

`GOG_MS_DIM_LABELS` | labels.
`GOG_MS_DIM_VALUES` | values.
`GOG_MS_DIM_CATEGORIES` | categories.
`GOG_MS_DIM_BUBBLES` | bubble values.
`GOG_MS_DIM_TYPES` | maximum value known by MS, should not occur.
`GOG_MS_DIM_ERR_plus1` | positive erros on first dimension, we made it up.
`GOG_MS_DIM_ERR_minus1` | negative erros on first dimension, we made it up.
`GOG_MS_DIM_ERR_plus2` | positive erros on second dimension, we made it up.
`GOG_MS_DIM_ERR_minus2` | negative erros on second dimension, we made it up
`GOG_MS_DIM_START` | start value, we made it up for dropbars.
`GOG_MS_DIM_END` | end value, we made it up for dropbars.
`GOG_MS_DIM_LOW` | low value, we made it up for hi-lo.
`GOG_MS_DIM_HIGH` | high value, we made it up for hi-lo.
`GOG_MS_DIM_EXTRA1` | we made it up for other uses.
`GOG_MS_DIM_EXTRA2` | we made it up for other uses.

### GogSeriesElement

    typedef struct _GogSeriesElement GogSeriesElement;

### GogSeriesElementClass

    typedef struct {
    	GogStyledObjectClass base;

    	/* Virtuals */
    	gpointer (*gse_populate_editor) (GogObject *gobj,
    					 GOEditor *editor,
    					 GOCmdContext *cc);
    } GogSeriesElementClass;

GogStyledObjectClass `base`; |
`gse_populate_editor` () | populates editor.

### enum GogSeriesPriority

    typedef enum {
    	GOG_SERIES_REQUIRED,  /* it must be there */
    	GOG_SERIES_SUGGESTED, /* allocator will fill it in, but use need not */
    	GOG_SERIES_OPTIONAL,
    	GOG_SERIES_ERRORS
    } GogSeriesPriority;

Applies to data declarations in GogSeriesDimDesc.

`GOG_SERIES_REQUIRED` | it must be there.
`GOG_SERIES_SUGGESTED` | allocator will fill it in, but use need not.
`GOG_SERIES_OPTIONAL` | optional data.
`GOG_SERIES_ERRORS` | optional data for error bars.

### enum GogSeriesFillType

    typedef enum {
    	GOG_SERIES_FILL_TYPE_Y_ORIGIN,
    	GOG_SERIES_FILL_TYPE_X_ORIGIN,
    	GOG_SERIES_FILL_TYPE_BOTTOM,
    	GOG_SERIES_FILL_TYPE_LEFT,
    	GOG_SERIES_FILL_TYPE_TOP,
    	GOG_SERIES_FILL_TYPE_RIGHT,
    	GOG_SERIES_FILL_TYPE_ORIGIN,
    	GOG_SERIES_FILL_TYPE_CENTER,
    	GOG_SERIES_FILL_TYPE_EDGE,
    	GOG_SERIES_FILL_TYPE_SELF,
    	GOG_SERIES_FILL_TYPE_NEXT,
    	GOG_SERIES_FILL_TYPE_X_AXIS_MIN,
    	GOG_SERIES_FILL_TYPE_X_AXIS_MAX,
    	GOG_SERIES_FILL_TYPE_Y_AXIS_MIN,
    	GOG_SERIES_FILL_TYPE_Y_AXIS_MAX,
    	GOG_SERIES_FILL_TYPE_INVALID
    } GogSeriesFillType;

`GOG_SERIES_FILL_TYPE_Y_ORIGIN` | from origin ox the X-axis.
`GOG_SERIES_FILL_TYPE_X_ORIGIN` | from the origin of the Y-axis
`GOG_SERIES_FILL_TYPE_BOTTOM` | from the chart bottom.
`GOG_SERIES_FILL_TYPE_LEFT` | from the chart left side.
`GOG_SERIES_FILL_TYPE_TOP` | from the chart top.
`GOG_SERIES_FILL_TYPE_RIGHT` | , from the chart right side.
`GOG_SERIES_FILL_TYPE_ORIGIN` | from the origin (for radar and polar plots).
`GOG_SERIES_FILL_TYPE_CENTER` | from the center (for radar and polar plots).
`GOG_SERIES_FILL_TYPE_EDGE` | from the edge (for radar and polar plots).
`GOG_SERIES_FILL_TYPE_SELF` | close the series curve and fills it.
`GOG_SERIES_FILL_TYPE_NEXT` | from next series.
`GOG_SERIES_FILL_TYPE_X_AXIS_MIN` | from X-axis minimum.
`GOG_SERIES_FILL_TYPE_X_AXIS_MAX` | from X-axis maximum.
`GOG_SERIES_FILL_TYPE_Y_AXIS_MIN` | from Y-axis minimum.
`GOG_SERIES_FILL_TYPE_Y_AXIS_MAX` | from Y-axis maximum.
`GOG_SERIES_FILL_TYPE_INVALID` | invalid, should not happen.

### gog_series_check_validity ()

    void                gog_series_check_validity           (GogSeries *series);

Updates the is_valid flag for a series. This is an internal utility that should not really be necessary for general usage.

`series` : | GogSeries

### gog_series_get_element ()

    GogSeriesElement *  gog_series_get_element              (GogSeries const *series,
                                                             int index);

`series` : | GogSeries
`index` : | the element index
Returns : | the GogSeriesElement corresponding to `index` if any. [transfer none]

### gog_series_get_fill_type ()

    GogSeriesFillType   gog_series_get_fill_type            (GogSeries const *series);

### gog_series_get_fill_type_from_combo ()

    GogSeriesFillType   gog_series_get_fill_type_from_combo (GogSeries const *series,
                                                             GtkComboBox *combo);

### gog_series_get_interpolation_params ()

    GogDataset *        gog_series_get_interpolation_params (GogSeries const *series);

Only constrained cubic spline interpolation use parameters (for the slopes at each end).

`series` : | GogSeries
Returns : | the interpolation parameters. [transfer none]

### gog_series_get_name ()

    GOData *            gog_series_get_name                 (GogSeries const *series);

Gets the _source_ of the name associated with the series. NOTE : this is _NOT_ the actual name.

`series` : | a GogSeries
Returns : | a GODataScalar, without added reference. [transfer none]

### gog_series_get_overrides ()

    GList const  	 *    gog_series_get_overrides            (GogSeries const *series);

Overrides are data owning their own style, overriding the series style.

`series` : | GogSeries
Returns : | the series overrides. [element-type GogSeriesElement][transfer none]

### gog_series_get_plot ()

    GogPlot *           gog_series_get_plot                 (GogSeries const *series);

`series` : | GogSeries
Returns : | the possibly NULL plot that contains this series. [transfer none]

### gog_series_get_xy_data ()

    unsigned            gog_series_get_xy_data              (GogSeries const *series,
                                                             double const **x,
                                                             double const **y);

### gog_series_get_xyz_data ()

    unsigned            gog_series_get_xyz_data             (GogSeries const *series,
                                                             double const **x,
                                                             double const **y,
                                                             double const **z);

### gog_series_has_legend ()

    gboolean            gog_series_has_legend               (GogSeries const *series);

`series` : | GogSeries
Returns : | TRUE if the series has a visible legend entry

### gog_series_is_valid ()

    gboolean            gog_series_is_valid                 (GogSeries const *series);

`series` : | GogSeries
Returns : | the current cached validity. Does not recheck

### gog_series_map_XL_dim ()

    int                 gog_series_map_XL_dim               (GogSeries const *series,
                                                             GogMSDimType ms_type);

### gog_series_num_elements ()

    unsigned            gog_series_num_elements             (GogSeries const *series);

`series` : | GogSeries
Returns : | the number of elements in the series

### gog_series_populate_fill_type_combo ()

    void                gog_series_populate_fill_type_combo (GogSeries const *series,
                                                             GtkComboBox *combo);

### gog_series_set_XL_dim ()

    void                gog_series_set_XL_dim               (GogSeries *series,
                                                             GogMSDimType ms_type,
                                                             GOData *val,
                                                             GError **err);

### gog_series_set_dim ()

    void                gog_series_set_dim                  (GogSeries *series,
                                                             int dim_i,
                                                             GOData *val,
                                                             GError **err);

Absorbs a ref to `val`

`series` : | GogSeries
`dim_i` : | Which dimension
`val` : | GOData. [transfer full]
`err` : | optional GError pointer

### gog_series_set_fill_type ()

    void                gog_series_set_fill_type            (GogSeries *series,
                                                             GogSeriesFillType fill_type);

### gog_series_set_index ()

    void                gog_series_set_index                (GogSeries *series,
                                                             int ind,
                                                             gboolean is_manual);

If `ind` >= 0 attempt to assign the new index. Auto indicies (`is_manual` == FALSE) will not override the current index if it is manual. An `index` < 0, will reset the index to automatic and potentially queue a revaluation of the parent chart's cardinality.

`series` : | GogSeries
`ind` : | >= 0 assigns a new index, < 0 resets to auto
`is_manual` : | gboolean

### gog_series_set_name ()

    void                gog_series_set_name                 (GogSeries *series,
                                                             GODataScalar *name_src,
                                                             GError **err);

Absorbs a ref to `name_src`.

`series` : | a GogSeries
`name_src` : | a GODataScalar. [transfer full]
`err` : | a GError

## Property Details

### The `"fill-type"` property

      "fill-type"                gchar*                : Read / Write

How to fill the area.

Default value: "invalid"

### The `"has-legend"` property

      "has-legend"               gboolean              : Read / Write

Should the series show up in legends.

Default value: TRUE

### The `"interpolation"` property

      "interpolation"            gchar*                : Read / Write

Type of line interpolation.

Default value: "linear"

### The `"interpolation-skip-invalid"` property

      "interpolation-skip-invalid" gboolean              : Read / Write

Should the series interpolation ignore the invalid data.

Default value: FALSE

### The `"index"` property

      "index"                    gint                  : Read / Write

Index of the corresponding data element.

Allowed values: >= 0

Default value: 0