1 | (* This file plots two graphs side by side with a tricky legend format: |
---|
2 | * There are 5 legend entries, one of which is of a curve containing a |
---|
3 | * line. The desire is to make the legend have two columns, the first |
---|
4 | * with the first three legend entries, and the second with the last |
---|
5 | * two. |
---|
6 | * |
---|
7 | * The way that this is done is to actually plot four graphs -- two sets |
---|
8 | * of two graphs superimposed on each other. The first of the two |
---|
9 | * graphs has the first three curves, and the second has the last two. |
---|
10 | * Thus, the first can set its legend to be the first column, and the |
---|
11 | * second can set its legend to be the second column. |
---|
12 | * |
---|
13 | * To get the two columns is pretty simple. In each graph, the |
---|
14 | * x and y coordinates of the legends are explicitly set. For the |
---|
15 | * first column, the x coordinate is 0, and for the second column, |
---|
16 | * the x coordinate is 5.5. |
---|
17 | * |
---|
18 | * A potential problem with this graph is that in the first set of |
---|
19 | * legends, there is a line (the "Merge Sort" curve), while in the |
---|
20 | * second set there is not. Thus, if nothing is done with the midspace |
---|
21 | * and linelength paramters, the second columns marks will appear closer |
---|
22 | * to the text than in the first column. The solution to this was to |
---|
23 | * explicitly set the linelength and midspace in the first legend to |
---|
24 | * be .80 and .25 respectively. This means that in the first legend, the |
---|
25 | * marks are 0.65 units away from the text (in the presence of a line, |
---|
26 | * the marks are (midspace + linelength/2) away from the text. In |
---|
27 | * the absence of a line, the marks are simply (midspace) away from the |
---|
28 | * text. Thus, midspace is set to be 0.65 in the second legend column. |
---|
29 | *) |
---|
30 | |
---|
31 | (* Set up the axes of the first graph. Translate it to the left of the |
---|
32 | * page *) |
---|
33 | |
---|
34 | newgraph |
---|
35 | x_translate -1.37 |
---|
36 | yaxis size 1.9 min 0 max 40 precision 0 hash 10 mhash 1 |
---|
37 | label : Time (sec) |
---|
38 | fontsize 8 |
---|
39 | xaxis size 2.14 min 0 max 10 hash 2 mhash 1 |
---|
40 | label : Heap Size (MBytes) |
---|
41 | fontsize 8 |
---|
42 | title : Graph 9: Checkpoint Time of Other Benchmarks. |
---|
43 | fontsize 10 |
---|
44 | |
---|
45 | (* Draw the first three curves *) |
---|
46 | newcurve |
---|
47 | label : Merge Sort |
---|
48 | marktype circle fill 0.0 |
---|
49 | linetype solid |
---|
50 | pts |
---|
51 | .789 5.5414 |
---|
52 | 2.985 13.9958 |
---|
53 | 3.962 17.2362 |
---|
54 | 4.938 21.0804 |
---|
55 | 7.868 32.4082 |
---|
56 | 9.821 39.8312 |
---|
57 | newcurve |
---|
58 | label : Travelling Salesman |
---|
59 | marktype triangle fill 0 |
---|
60 | linetype none |
---|
61 | pts |
---|
62 | .064 2.359 |
---|
63 | newcurve |
---|
64 | label : Pattern Match |
---|
65 | marktype diamond fill 1.0 |
---|
66 | linetype none |
---|
67 | pts |
---|
68 | 1.233 6.374 |
---|
69 | |
---|
70 | (* set the legend *) |
---|
71 | legend linelength .8 midspace .25 x 0 y 47.5 defaults fontsize 7 |
---|
72 | |
---|
73 | (* Now make a second graph for the second curve with the same axes *) |
---|
74 | copygraph |
---|
75 | xaxis nodraw |
---|
76 | yaxis nodraw |
---|
77 | |
---|
78 | (* Draw the last two curves *) |
---|
79 | newcurve |
---|
80 | label : Bubble Sort |
---|
81 | marktype cross fill 1.0 |
---|
82 | linetype none |
---|
83 | pts |
---|
84 | .513 3.91 |
---|
85 | newcurve |
---|
86 | label : Matrix Multiplication |
---|
87 | marktype box fill 1 |
---|
88 | linetype none |
---|
89 | pts |
---|
90 | 3 14.71 |
---|
91 | |
---|
92 | (* set the second legend to be a second column from the first *) |
---|
93 | legend x 5.5 midspace .65 |
---|
94 | |
---|
95 | (* The second of these graphs is just like the first only it is translated |
---|
96 | to the right *) |
---|
97 | |
---|
98 | copygraph |
---|
99 | x_translate 1.7 |
---|
100 | xaxis draw |
---|
101 | yaxis draw |
---|
102 | yaxis min 0 max 5 hash 1 mhash 1 |
---|
103 | title : Graph 10: Checkpoint Overhead of Other Benchmarks. |
---|
104 | fontsize 10 |
---|
105 | |
---|
106 | newcurve |
---|
107 | label : Merge Sort |
---|
108 | marktype circle fill 0.0 |
---|
109 | linetype solid |
---|
110 | pts |
---|
111 | .789 0.5954 |
---|
112 | 2.985 3.8368 |
---|
113 | 3.962 3.3598 |
---|
114 | 4.938 3.6288 |
---|
115 | 7.868 4.3096 |
---|
116 | 9.821 4.377 |
---|
117 | |
---|
118 | newcurve |
---|
119 | label : Travelling Salesman |
---|
120 | marktype triangle fill 0 |
---|
121 | linetype none |
---|
122 | pts |
---|
123 | .064 0.17 |
---|
124 | |
---|
125 | newcurve |
---|
126 | label : Pattern Match |
---|
127 | marktype diamond fill 1.0 |
---|
128 | linetype none |
---|
129 | pts |
---|
130 | 1.233 0.07 |
---|
131 | |
---|
132 | legend linelength .8 midspace .25 x 0 y 5.9 defaults fontsize 7 |
---|
133 | |
---|
134 | copygraph |
---|
135 | xaxis nodraw |
---|
136 | yaxis nodraw |
---|
137 | |
---|
138 | newcurve |
---|
139 | label : Bubble Sort |
---|
140 | marktype cross fill 1.0 |
---|
141 | linetype none |
---|
142 | pts |
---|
143 | .513 0.07 |
---|
144 | |
---|
145 | newcurve |
---|
146 | label : Matrix Multiplication |
---|
147 | marktype box fill 1 |
---|
148 | linetype none |
---|
149 | pts |
---|
150 | 3 0.75 |
---|
151 | |
---|
152 | legend x 5.5 midspace .65 |
---|