Provides a visualization mechanism for drawing and rendering `Graph`s. Current default implementation is for Swing, but most subsystems are extensible for other toolkits.

In general, a visualization is accomplished with

- a (Swing) Component, into which the data is rendered. This implementation uses a `{@link edu.uci.ics.jung.visualization.VisualizationViewer VisualizationViewer}`
- a `{@link edu.uci.ics.jung.visualization.Renderer Renderer}`, which determines how specific Vertices are drawn on screen.
- a `{@link edu.uci.ics.jung.visualization.Layout Layout}`, which determines where Vertices are drawn on screen.

Thus, by selecting one of each of these three, it is possible to coordinate drawing. The default implementation traverses the `Visualizer`, asking it for locations of vertices, and then paints them individually with the `Renderer` inside the Swing component. In addition, the `{@link edu.uci.ics.jung.visualization.GraphDraw GraphDraw}` infrastructure simplifies many of these transformations by packaging the `VisualizationViewer`, the `Renderer`, and the `Visualizer` together. Users may then substitute out parts as it is appropriate. (Sample code is available in the `GraphDraw` documentation.)

The current implementation supports only 2-D layout algorithms (because it doesn't contain code to transform 3D coordinates to 2D) and only visualizes `{@link edu.uci.ics.jung.graph.Graph Graph}`s (as opposed to the more general `ArchetypeGraph`s.)

In order to set up fading effects when vertices are filtered out and filtered in, see the notes at `{@link edu.uci.ics.jung.visualization.FadingVertexLayout FadingVertexLayout}`.