-void graph_add_label(struct graph *g, const char *label);
-int graph_add_data(struct graph *g, const char *label, const double value);
-int graph_add_xy_data(struct graph *g, const char *label,
- const double x, const double y);
-void graph_set_color(struct graph *g, const char *label,
+/* graph_y_title() sets the title of the y axis to the given string */
+graph_label_t graph_add_label(struct graph *g, const char *label);
+/* graph_add_label() adds a new "stream" of data to be graphed.
+ * For line charts, each label is a separate line on the graph.
+ * For bar charts, each label is a grouping of columns on the x-axis
+ * For example:
+ *
+ * | * | **
+ * | * xxxxxxxx | **
+ * | *** x | ** **
+ * | *x **** | ** ** **
+ * | xxxx* ***** | ** xx ** xx **
+ * | x ** | ** xx ** xx ** xx
+ * | x | ** xx ** xx ** xx
+ * ----------------------- -------------------------
+ * A B C
+ *
+ * For a line graph, the 'x's For a bar graph,
+ * would be on one "label", and 'A', 'B', and 'C'
+ * the '*'s would be on another are the labels.
+ * label.
+ */
+
+int graph_add_data(struct graph *g, graph_label_t label, const double value);
+/* graph_add_data() is used to add data to the labels of a bar graph */
+int graph_add_xy_data(struct graph *g, graph_label_t label,
+ const double x, const double y, const char *tooltip);
+/* graph_add_xy_data is used to add data to the labels of a line graph */
+
+void graph_set_color(struct graph *g, graph_label_t label,