The present invention relates to a method of labeling the axes of graphs and charts.
Effectively conveying time-based data often requires creating charts and graphs that are easily understood and appreciated. In today's business world, a superior presentation of data may greatly impact a business's performance. The primary purpose of a graph is to quickly communicate information to an intended audience. An effective graph conveys information to a viewer in a clear, well-designed and unambiguous manner. Thus, an effective graph has meaningful labels, clear axis marks, organization, and is uncluttered. The success of graph often depends upon whether the graph and its labels are aesthetically pleasing.
Graphs and charts are used in a variety of fields, such as finance, e-commerce, communications, consulting, accounting, law, marketing, sales, etc. More and more these businesses are having to deal with a large influx of data and they must find a way to quickly and effectively communicate the data. As data becomes more available businesses need an automated process to create comprehendible graphs and charts. This need is most acute when handling time based data because, time units have unusual variations and particularities. Thus, an automated process that converts time based data into an elegantly labeled graph is needed.
The automated labeling of a time axis is one of the most challenging components of any charting software. Commercially available charting software does not automate the labeling of the time axis in a way that is visually pleasing. For example, many spread sheet packages only use a single line of text to label the time axis. The resulting chart is cluttered and has redundant labels. In contrast, leading business publications employ multi-line labeling of the time axis in their presentation graphics. However, these labels are not automated and require human operators (e.g. graphic artists) to perform the layout manually. Thus, the general problem is finding a method to elegantly and automatically label a chart or a graph with a time axis for any time unit.
The present invention is an automated method and system of labeling of the axes of a graph. The present invention dynamically labels a graph axis with time based data. The labels on the axis adjust for the amount and type of data provided. The labels have multiple levels so that graph appears uncluttered and adjust for a display's size.
The invention generates a set of time labels by processing the input data; the time labels are stored in a multi-level data structure. The multi-level data structure is then processed to redefine the time labels. The refining step includes adjusting the labels so that they fit in the space provided along the axis. The time labels that are stored in the multi-level data structure are then used to generate multi-level time labels. These multi-level time labels are used to label the axis of the graph. The invention automatically provides an effective, elegant, labeled time based graph.
One of the advantages of the current invention is that the software creates a dynamically labeled time axis that adjusts for the display size and for the amount of data that is provided. Further, the present invention automatically generates an elegant layout based on the data provided, the available real estate (i.e. the length of the time axis) and the desired font.
Another advantage of the invention is that the method of labeling may be applied to any type of charting software. The process is generic and is not software specific.
Another advantage of the present invention is that knowledge of time units and their peculiarities is built into the system thereby enabling “known” time labels.
Another advantage of the invention is that the present invention is independent of any display device and, hence it can be utilized for any type display device.
Yet another advantage of the invention is that knowledge of the displays may be built into the system, enabling automatic labeling and gridding.
Yet another advantage of the present invention is that is produces non-cluttered multi-level labels for a graph.
The details of the present invention, both as to its structure and operation can best be understood by referring to the accompanying drawings.
a and 6b are exemplary diagrams of multi-level data structures.
The present invention is a method and system for automatically labeling an axis of a graph with time based data. The data flow of the present invention is provided in
As provided in
The output of the software program is a labeled graph such as the one shown in
Overall, the method of automatically labeling a time axis of a graph with time based data includes six steps. A flow diagram of the steps is provided in
Step 16 describes generating a set of time labels. A flow diagram of the process that generates a set of time labels is provided in
Step 30 accepts the initial set of time labels and determines whether the initial time labels can be written in the allotted space on the time axis 10. The lengths of each time label and an appropriate inter-label spacing constant is summed. The inter-label spacing constant is a predetermined minimum distance between each time label, the inter-label spacing constant may vary depending upon the font utilized. The sum is compared with the length of the time axis 10. If step 30 determines that the initial time labels will fit in the allotted space on the time axis 10 then those time labels will be used and the next step 18, referred to in
Step 34 generates an abbreviated version of the time labels. Abbreviations may be predefined or user defined. In addition, for the year unit, label prefixes may be factored (e.g. 1995, '96 '97 '98 '99 2000). The abbreviated version is an adaptation of the original time labels; the abbreviated version contains all of the original time labels in abbreviated form. For example, if the unit name is supposed to display year and month (“full year” over “full month”), two abbreviated versions may be generated. One abbreviated version may be the “two digit year” over the “abbreviated month” and the other abbreviated version may be “full year” over several “single character months”. Each of these abbreviated versions is tested in step 30 to determine if the abbreviated version of the time labels will fit along the time axis 10. If either abbreviated version fits then those abbreviated time labels will be used and the next step 18, referred to in
Step 36 generates a subset of the time labels. For example, assume the time labels were every year from 1975 to 2000. Ever fifth label may be selected yielding the subset 1975 1980 1985 1990 1995 2000; this would be a subset of time labels. A label constant may be considered by the program to produce a more recognizable subset. The label constant determines the frequency of the time label. The frequency is the amount of time a label occurs. The label constant guides the software program in choosing a more comprehendible subset. The label constant is dependent on the time unit and may vary for each time unit. For example, consider the situation where the step 36 generates a subset containing every 13th label. But, every 13th label is not easily recognized. If the label constant is used and is set at 5, every 15th label is chosen because it is the next frequency of label that is divisible by the label constant. Also, a threshold may be used in step 36. For example, assume the threshold is set at 30 and the label constant is set at 5. The original set of data (11 to 45 seconds) translates 11 to 40 seconds→15 seconds, 16 seconds to 19 seconds→20 seconds, 21 seconds to 29 seconds→to 30 seconds. All periods greater than 30 seconds are rounded to a minute. Also, a mapping function may be used that will map certain data or data ranges to other values. Thus, label constants, thresholds, and mapping functions assist in generating a set of labels that is standard and identifiable.
Once a subset of time labels is generated, the program initiates step 30 to determine if the subset fits along the time axis. If the subset fits, then that subset of time labels is used and the next step 18, referred to in
Step 18 is creating a multi-level data structure 38. Pictorial examples of multi-level data structures 38 are shown in
Step 20 is storing the time labels in the multi-level data structure 28. Time labels are stored in a multi-level data structure 38 with one time unit per level. The multi-level data structure 38 is populated by reviewing the frequency of the time units of the labels. The frequency is the amount of time a unit occurs in a given period. For example, seconds have a higher frequency then minutes and minutes has a higher frequency then hours. The time labels with the highest unit frequency are stored at the “logical” top of the multi-level data structure 38. Then, in descending order of unit frequency, the time labels stored on each level of the multi-level data structure 38. If there is no difference in the frequency of the time units, the order of time labels is not set (for example, numeric days and character days). For example, referring to
While storing the time labels in the multi-level data structure 38, each time label is indexed. The time label has a start and an end index. This is demonstrated in the following example. Assume the time labels are 01-Nov-1999 01-Dec-1999 01-Jan-2000 01-Feb-2000 01-Mar-2000. The multi-level data structure would be:
The next portion of code defines a vector that corresponds to one level of the multi-level data structure 38. This data structure is a vector of labels.
Finally the vector/level is assigned a particular time unit. The data structure is a vector of linelabel.
Step 22 is processing the multi-level data structure 38 to redefine the time labels stored in the multi-level data structure 38. Step 22 extends the precision of the time labels, rewrites time labels, and merges levels in the multi-level data structure 38. The purpose of this step is to redefine the appearance and organization of the time labels.
The multi-level data structure 38 is reviewed to determine if any of the time labels may be made more precise. For example,
The transformation is important because it more accurately displays the precision of the initial timestamp.
Next, invariant time labels may be merged. An invariant time label is a label where there is only one label in a level; examples are provided below. There may be levels that contain only one time label. These are termed invariant time labels, and are merged into other levels. Examples of invariant time labels are shown in
The second situation where invariant time labels are merged is where the levels contain both invariant and variant time labels. This is the most general case. The overall strategy is to merge all invariant time labels. For example, the program may make the following transformation so that the time labels are clearer:
It may be the case that an invariant time label is merged into a single line that contains variant time labels. For example, given that there is enough space for the 2000 to fit after Jan, the following transformation will take place:
Step 24 is generating multi-level time labels 12 from the multi-level data structure 38. Here, the time labels are structurally aggregated. In another words, instead of having individual time labels, the time labels are aggregated with those in the “column” of the multi-level data structure. Thus, a multi-level time label 12 is formed instead of individual time labels.
Step 26 is labeling the graph with the multi-level time labels 12. The multi-level time labels 12 are rendered onto the time axis of the graph. The graph is then displayed. Display devices 6, such as a computer screens, are typically addressed in terms of device display coordinates or pixel coordinates. These device display coordinates indicate where a multi-level time label 12 will be displayed in the image. Functions are used to convert the indexes into device display coordinates. The functions support date arithmetic and provide an interface for extracting time fields, such as year, month, day, hour, etc., from the input data 2. Further, the functions may also convert numerical data to character strings such as “11” to “November”. Finally, the chart or graph is produced with an elegantly labeled time axis 10. Examples of outputted graphs are shown in
Axis markers may also be defined. Axis markers (also known as hash marks) are used to define increments along the time axis that are too small to be labeled. Axis markers may be written for non-labeled time units; axis markers will be written for the lowest frequency non-labeled time unit. Axis markers are defined in a similar fashion to time labels. A vector of axis marker is defined; each axis markers contains indexes that indicate where the axis marker should be written. The indexes are not display device specific. For example, a code could be written in Java such as the one that follows:
It is important to note that while the present invention has been described in the context of a fully functioning data processing system, those of ordinary skill in the art will appreciate that the processes of the present invention are capable of being distributed in the form of a computer readable medium of instructions and a variety of forms and that the present invention applies equally regardless of the particular type of signal bearing media actually used to carry out the distribution. Examples of computer readable media include recordable-type media such as floppy disc, a hard disk drive, RAM, and CD-ROM's, as well as transmission-type media, such as digital and analog communications links.
Although specific embodiments of the present invention have been described, it will be understood by those of skill in the art that there are other embodiments that are equivalent to the described embodiments. Accordingly it is to be understood that the invention is not to be limited by the specific illustrated embodiments, but only be the scope of the appended claims.
Number | Name | Date | Kind |
---|---|---|---|
5414838 | Kolton et al. | May 1995 | A |
5461708 | Kahn | Oct 1995 | A |
5485564 | Miura | Jan 1996 | A |
5581677 | Myers et al. | Dec 1996 | A |
5581678 | Kahn | Dec 1996 | A |
5596691 | Good et al. | Jan 1997 | A |
5748188 | Hu et al. | May 1998 | A |
5894311 | Jackson | Apr 1999 | A |
5895451 | Yamade et al. | Apr 1999 | A |
5905814 | Mochizuki et al. | May 1999 | A |
5914715 | Sasaki | Jun 1999 | A |
6023703 | Hill | Feb 2000 | A |
6064401 | Holzman et al. | May 2000 | A |
6075530 | Lucas et al. | Jun 2000 | A |
6081809 | Kumagai | Jun 2000 | A |
6091424 | Madden et al. | Jul 2000 | A |
6157929 | Zamiska et al. | Dec 2000 | A |
6219050 | Schaffer | Apr 2001 | B1 |
6230064 | Nakase et al. | May 2001 | B1 |
6243105 | Hoyer et al. | Jun 2001 | B1 |
6262728 | Alexander | Jul 2001 | B1 |
6275229 | Weiner et al. | Aug 2001 | B1 |
6320577 | Alexander | Nov 2001 | B1 |
6320585 | Engel et al. | Nov 2001 | B1 |
6380953 | Mizuno | Apr 2002 | B1 |
6421828 | Wakisaka et al. | Jul 2002 | B1 |
6477536 | Pasumansky et al. | Nov 2002 | B1 |
6496817 | Whang et al. | Dec 2002 | B1 |
6516324 | Jones et al. | Feb 2003 | B1 |
6529217 | Maguire et al. | Mar 2003 | B1 |
6581068 | Bensoussan et al. | Jun 2003 | B1 |
6597378 | Shiraishi et al. | Jul 2003 | B1 |
6611142 | Jones et al. | Aug 2003 | B1 |
6816870 | Nishimura et al. | Nov 2004 | B1 |
6920608 | Davis | Jul 2005 | B1 |
20020030683 | Alexander | Mar 2002 | A1 |
20020131625 | Vining et al. | Sep 2002 | A1 |
20030058239 | Wall et al. | Mar 2003 | A1 |
20030064527 | Lubman et al. | Apr 2003 | A1 |
20030071814 | Jou et al. | Apr 2003 | A1 |
20050165842 | Nishimura et al. | Jul 2005 | A1 |
20050172218 | Nishimura et al. | Aug 2005 | A1 |
20050198042 | Davis | Sep 2005 | A1 |