I originally found this graphing library looking to use it for Cartesian graphs/plots and not for making a a diagramming editor, but it has enough functionality to have my purposes in mind as well.
In order to follow the current direction of the project, I'll incorporate optional interaction (editing) features as I go.
Below are classes to be created to enable basic Cartesian graphs:
[x] CartesianGraph A graph that plots points in three major display modes: points (disconnected/scattered points), lines (connected lines), or connected points. Other display types could be added later as well (ex. bar heights), perhaps in subclasses. This graph has axes (directed perpendicular edges) with potential unit marks/ticks. When scroll panning the graph viewport, the axes should remain, but their ticks change to reflect the current viewport position.
[x] FitToContentLayout Modifies the viewport of the graph so that all points are visible, and according to the placement of the graph axes.
[x] MultiplotModel Organizes cells and edges into plots, such that each cell represents a point in an ordered sequence by x-value, and each edge connects adjacent cells in a plot.
[x] CartesianPoint A plot point with x,y coordinates, a text to show its coordinates, and a bullet (default is small circle). Ideally I would want points to not be hierarchical as they exist in sequence rather than a tree, but I could probably use the child-parent members to reference leading and following points, where the "tree level" of a point is determined with its x coordinate.
[x] SimpleEdge A line between cells, extends AbstractEdge. It will have no text, be a straight diagonal, and still have optional direction.
[ ] CartesianAxis An x or y axis at along the edge of the viewport, with a text and optional unit marks.
[x] CartesianGraphDemo A test driver app that creates and updates a cartesian graph.
I originally found this graphing library looking to use it for Cartesian graphs/plots and not for making a a diagramming editor, but it has enough functionality to have my purposes in mind as well.
In order to follow the current direction of the project, I'll incorporate optional interaction (editing) features as I go.
Below are classes to be created to enable basic Cartesian graphs:
CartesianGraph
A graph that plots points in three major display modes: points (disconnected/scattered points), lines (connected lines), or connected points. Other display types could be added later as well (ex. bar heights), perhaps in subclasses. This graph has axes (directed perpendicular edges) with potential unit marks/ticks. When scroll panning the graph viewport, the axes should remain, but their ticks change to reflect the current viewport position.FitToContentLayout
Modifies the viewport of the graph so that all points are visible, and according to the placement of the graph axes.MultiplotModel
Organizes cells and edges into plots, such that each cell represents a point in an ordered sequence by x-value, and each edge connects adjacent cells in a plot.CartesianPoint
A plot point with x,y coordinates, a text to show its coordinates, and a bullet (default is small circle). Ideally I would want points to not be hierarchical as they exist in sequence rather than a tree, but I could probably use the child-parent members to reference leading and following points, where the "tree level" of a point is determined with its x coordinate.SimpleEdge
A line between cells,extends AbstractEdge
. It will have no text, be a straight diagonal, and still have optional direction.CartesianAxis
An x or y axis at along the edge of the viewport, with a text and optional unit marks.CartesianGraphDemo
A test driver app that creates and updates a cartesian graph.