A library of C++ classes for use in writing data visualization programs. The library embodies a general design principle for class libraries: that the classes are partitioned into entity classes and functionality classes. Entity classes in the library specify properties of areas in a display and the functionality classes specify functionalities which the areas may have, for example, being responsive to the mouse or the keyboard or being capable of executing drawing commands. The classes are narrowly defined, and when the C++ programmer specifies a class for an object, he or she can give the object exactly the desired properties by selecting from among the area classes and the functionality classes. Because properties are acquired by inheritance, code generated using the libraries is shorter and faster than code generated using conventional class libraries.
A technique for displaying the results of a query on a database. The technique associates a subquery of the query with a space in a display and represents the results of the subquery by means of a symbol whose appearance varies with a characteristic of the results of the subquery. The technique may be used with queries on a data base of statistical articles. The display is a grid with each field of the grid representing a journal-year pair. A symbol appears in the field if a search of the data base results in a minimum number of hits in the year and journal represented by the pair. The appearance of the symbol varies with properties such as the number of hits and the number of pages in the hits. Bar graphs along the sides of the grid indicate total numbers of hits per journal and year. The symbol for a given journal-year pair changes its color when the pointer is moved over it, and if a mouse button is depressed when the pointer is over the symbol, the data base references for the hits corresponding to the journal-year pair are displayed in an article view window. Sliders control the number of hits required for the display of a symbol and the size of the symbols. The implementation employs memory mapping and caching techniques to achieve rapid generation of a display from the results of a search.
Apparatus for providing displays in which the locations of nodes of a graph relative to each other are a function of the significance of a relationship between the nodes. The technique used to locate the nodes produces groups of nodes with significant relationships to each other which are set visually apart from the other nodes. The relationships between the nodes are defined by using a statistic to give weights to links between the nodes. Statistics may also be used to determine the size, shape, and color of the nodes and the color and width of the links. The display may also include histograms which show the numbers of links or nodes which have given values of the statistics and which relate the colors in which the nodes and links are displayed to values of the statistics. The histograms may further be used to interactively define masks for links and nodes, and masked links and nodes are not taken into account in making the display.
Apparatus for visualizing slices of transitive closures of entities having dependence relationships with one another. A preferred embodiment visualizes slices of programs. A display in a computer system includes reduced representations of the files, procedures, and lines making up a program. The user employs a pointing device to interactively select a reduced representation as the slice point and the apparatus computes the slice and changes the color of the reduced representations in the slice. The color of the reduced representation indicates the distance of the entity represented by the reduced representation from the slice point. The display may be rearranged so that files and procedures are ordered by distance from the slice point. Other aspects of the display include scaling the size of the reduced representation of a procedure to indicate the number of lines in the procedure and filling the reduced representation of the procedure according to the number of lines belonging to the slice which are contained in the procedure. A user may select open and closed representations of procedures. The open representation of a procedure contains reduced representations of the lines in the procedure. The apparatus also includes a viewer for viewing the text of lines in the program.
A technique for generating and displaying views of hierarchically clustered data in a computer system. A binary tree is stored in memory of a computer system. The leaf nodes represent data items and the interior nodes represent clusters of the data items and a measure of dissimilarity between child clusters. The nodes of the tree are traversed and a display area is recursively split until nodes having a certain level of dissimilarity are reached, at which time a group rectangle is drawn around the current rectangle. Lower level nodes continue to be processed so that all data items are displayed in the display area. During the splitting of rectangles, the rectangles are split along the longest axis to produce better dimensioned rectangles. Upon generating a new display at a different level of dissimilarity, all data items are displayed in their same relative location, with only the resulting groups changing.
A so-called "OpenChannel.TM." conference is established by separating particular participants of the conference from those participants that are actually currently active in the conference. This establishes a type of virtual conference, i.e., meeting, that can be monitored by participants, i.e., users, without requiring them to be actively a part of the conference call. These particular participants are in a so-called monitor mode. These participants can readily change their state from the monitor mode to a listen mode or active mode, as desired. One advantage of this invention is that a long-term conference of months or even years duration can be set up, only incurring a cost to participants when they are active participants in the conference call.
A ConnectIcon View is employed to establish collaborative communications between a plurality of participants in a group. Specifically, it is a dynamic visual representation of the participants of a group being invited to communicate together with their presence information, lists of documents and URLs (Uniform Resource Locators) to be examined, and a set of mechanisms (email, chat, voice, and the like) to initiate communication, each of which can be billed to the originator or otherwise as desired. The available presence information allows a user to employ the best mode of communicating for the instant purpose, namely, either asynchronous communication or synchronous communication.