1. Field of the Invention
The invention relates to the interactive display of graphs with nodes that have a large number of children.
2. Description of Related Art
Graphs:
One of the most useful ways of visually representing information is the graph. Mathematically, a graph is a set of nodes that may or may not be connected by arcs. The nodes represent entities and the arcs represent relationships between the entities.
Displaying Graphs with Large Numbers of Nodes:
Graphs may have very large numbers of nodes. Such graphs will be termed in the following large graphs. For designers of systems which employ large graphs, the display of such graphs presents major problems. The display devices employed by computer users are typically not large enough to legibly display all of the nodes of a large graph at once and the display of only part of the graph in legible form leaves that part without context. Two techniques have been used to overcome the problems of displaying large graphs:
The technique of zooming is too well known to require further explanation; the drawback of zooming is that a zoom to a larger scale typically results in a loss of context for the portion of the graph displayed at the larger scale.
A problem that is common to both zooming and distortion, however, is that both techniques operate independently of the node and link structure of the graph. It is this structure, however, which is the reason for the graph's existence and which contains most of the information in the graph. What is needed is techniques which not only permit display of a portion of a graph with more detail than another portion, but which do so in ways which take the node and link structure of the graph into account. Providing such techniques is an object of the present invention.
In one aspect, the object of the invention is attained by a node scroller which permits a user to interactively scroll through the children of a parent node that is displayed in a graph. The node scroller includes a node scroller that is associated with the parent node in the display and a list of the parent node's child nodes in memory that is accessible to the interactive display device that is producing the display. The interactive display device responds to a user input to the node scroller by determining a set of child nodes and displaying the set that has thus been determined. Elements of the node scroller may include up and down arrows and/or a slider. An input to an element specifies a position in the list of child nodes and the set of nodes that is displayed is made up of nodes from the neighborhood of the position.
In one version of the invention, the list of child nodes is divided into a sequence of pages and an input to an up or down arrow gets a next page in the sequence relative to a current page. The input to the up arrow gets the previous page in the sequence and the input to the down arrow gets the next page in the sequence. An input to the slider indicates a position in the list. In some embodiments, what is displayed is the page of nodes containing the position; in others, it is a set of nodes centered on the position indicated by the slider.
A node scroller may be positioned on the parent node or on the links connecting the parent node and the set of child nodes that is currently being displayed. A node scroller which is positioned on the parent node is termed a parent node scroller, and one that is positioned on the links is called a link node scroller. One version of a parent node scroller includes only up and down arrows; another includes the up and down arrows and a scrollbar. In this version, the scrollbar is hidden behind the parent node until a user input activates the node scroller, at which point the scrollbar is displayed in front of the parent node. A version of the link scroller includes a scrollbar that stretches across the links it is positioned on and up and down arrows at the ends of the scrollbar.
Other objects and advantages will be apparent to those skilled in the arts to which the invention pertains upon perusal of the following Detailed Description and drawing, wherein:
Reference numbers in the drawing have three or more digits: the two right-hand digits are reference numbers in the drawing indicated by the remaining digits. Thus, an item with the reference number 203 first appears as item 203 in
The following Detailed Description will begin with an overview of two versions of the node scroller as it appears in a display of a graph, will then describe a data structure that is used to represent the invention in a preferred embodiment, and will finally disclose an application programmer's interface that is employed in the preferred embodiment to manipulate the data structure.
Overview of a First Embodiment of the Node Scroller:
The children of the nodes at the center of interest are not shown in their entirety, but only one page 311 at a time. Thus, the page displayed at 311(i,j) is page (j) of the children of node 303(i). To see the next page up or the next page down, one employs node scroller 305 on a node at the center of interest. The version of the node scroller shown at 305 is made up of an up arrow 313 above the node and a down arrow 317 below the node. To go to the next page up of the children, one clicks on the up arrow; to go to the next page down, one clicks on the down arrow; the presence of a + in the arrow indicates that there are more pages in the direction of the arrow. Thus, in node 303(i), node scroller 305 indicates that the page of nodes shown at 311(i,j) is the first page of nodes. In a preferred embodiment, a node scroller 305 appears on a node only when the node is included in the center of interest. In a preferred embodiment, a node is included when the pointing device passes over the node. A node ceases belonging to the center of interest when it is too distant from the node over which the pointing device has most recently passed.
Continuing with
Overview of a Second Embodiment of the Node Scrollers.
Representing Node Scrollers.
In a preferred embodiment, the nodes and node parts are objects that are defined using the well-known Java™ programming environment. A feature of the Java programming environment is that it permits one object to contain a reference to another object. Thus, a node part object that is defined for a node object may contain a reference to the node object.
Included in node type definition 1202(a) is node description object 1207(a), which is associated with node type object 1205(a) and describes the appearance of nodes having the node type represented by node type object 1205(a). Four lists are associated with a node description 1207: node measurement list 1209, which is a list of the current physical measurements of the node's display, node attribute list 1211, which is a list of user-defined attributes such as color which apply to the entire displayed node, content attribute list 1213, which has an entries for content attributes belonging to nodes of the node type defined by node type object 1205(a), and node action list 1212, which associates actions that may be performed in response to user inputs with the node.
Node definition 1203 defines a node that belongs to a given node type. The node is represented by node object 1223(i), which is associated with node type object 1205(a). Node object 1223(i) has associated with it a node description 1207(i). When the node corresponding to node object 1213(i) is created, it inherits its node description from the node description belonging to its node type. Thus, node object 1223(i) inherits its node description 1207(i) from node description 1207(a). The node measurements, node attributes, and content attributes associated with a given node object may be modified for that object. Copies of the modified attributes are associated with the node; attributes that are unmodified are obtained from the node type from which they were inherited. For example, where the content attributes include run-time values, copies of these values would be made for the content attribute list for the node when the node was created or the values were updated. Each node object 1223 further has a paging data source object 1229 which describes the current state of the node scroller associated with the object and lists of the links connecting the node object to other nodes; there are two types of links; in links, running from another node to this node, specified in link list 1225, and out links, running from this node to another node, specified in out link list 1227. Out link list 1227 thus specifies a node's children and is used to locate the nodes specified by the node scroller.
Details of Paging Data Source Object 1229.
A topology listener object 1315 may be associated with object 1229. The topology listener object 1315 specifies code that is to be performed in response to user mousing inputs concerning the node scroller. button click code ID 1317 specifies actions to be performed when a user clicks on either button 611 or button 613 of the second embodiment or on an arrow 305 of the first embodiment. slider motion code ID 1319 specifies actions to be performed when a user moves slider 705 in the second embodiment.
The button click code in the first embodiment is executed in response to a click on a paging arrow by incrementing or decrementing the current page number as indicated by the arrow direction and displaying the next or previous page of child nodes. The link data items in out link list 1227 are used to locate the child nodes to be displayed. In the second embodiment, what happens depends on whether the node scroller is a parent node scroller, as determined by the value of field 1303. When the node scroller is not a parent node scroller, the click works as described above for the first embodiment. When the node scroller is a parent node scroller, what happens depends on the value of field 1313. If field 1313 indicates that the parent node scroller is in front of the parent node, the click works as described above for the first embodiment, except that the position of slider 705 in the scroll bar is also changed to correspond to the position of the page of children being displayed in the set of pages.
The slider motion code is executed in the second embodiment whenever a user employs the mouse to drag the slider along the scrollbar. As the slider is dragged, the code computes the relationship between the current position of the slider in the scrollbar and the pages of children and displays the page that corresponds to the current position. When the slider motion stops, the value for the current page number in field 1307 is set to the page corresponding to the current position of the slider. In other embodiments, the current position of the slider may be mapped to a particular child node and the page size may be used to determine how many nodes on each side of the particular child node are to be displayed. In such an embodiment, object 1301 will include field 1311 and the field will contain the current position of the slider.
The API for Node Scrollers:
In the presently-preferred embodiment, an API written in the well-known Java programming language is available to create and manipulate paging data source objects 1229. This API is shown in
The foregoing Detailed Description has described to those skilled in the relevant technologies how to make and use the inventions described herein and has further disclosed the best mode presently known to the inventors of making and using their inventions. It will be immediately apparent to those skilled in the relevant technologies that there are many possible implementations of the principles of the invention. For example, the components of the node scroller can take many forms and many locations relative to the parent and child nodes are possible. For instance, a parent node scroller may be located next to the parent node instead of on it and a link node scroller may be located on the side of the displayed child nodes that is away from the links to the parent. The kinds of inputs to the node scroller may vary. For example, a single click or double click may be used with the up or down arrows and any kind of input or visual device which indicates a position on a scroll bar may be used as well as a slider. Some implementations may only permit movement through the child nodes by page increments, while other implementations may not employ pages at all. Accordingly, some node scrollers may have only scrollbars, while others may have only up and down arrows.
For all of the foregoing reasons, the Detailed Description is to be regarded as being in all respects exemplary and not restrictive, and the breadth of the invention disclosed here in is to be determined not from the Detailed Description, but rather from the claims as interpreted with the full breadth permitted by the patent laws.
This patent application claims priority from U.S. provisional patent application 60/605,823, Making and viewing nodes in a graph, filed Aug. 31, 2004, which has the same inventors as the present patent application. The entirety of 60/605,823 is incorporated by reference into the present patent application for all purposes.
Number | Name | Date | Kind |
---|---|---|---|
5835085 | Eick et al. | Nov 1998 | A |
6216134 | Heckerman et al. | Apr 2001 | B1 |
6738787 | Stead | May 2004 | B2 |
6801229 | Tinkler | Oct 2004 | B1 |
6901555 | Hida et al. | May 2005 | B2 |
20020167551 | Steele et al. | Nov 2002 | A1 |
20030007002 | Hida et al. | Jan 2003 | A1 |
20030079182 | Hofmann | Apr 2003 | A1 |
20040150644 | Kincaid et al. | Aug 2004 | A1 |
20040169688 | Burdick et al. | Sep 2004 | A1 |
20050114795 | Beaudoin | May 2005 | A1 |
Number | Date | Country | |
---|---|---|---|
20060059435 A1 | Mar 2006 | US |
Number | Date | Country | |
---|---|---|---|
60605823 | Aug 2004 | US |