diff options
Diffstat (limited to 'doc/user/gra_tick')
-rw-r--r-- | doc/user/gra_tick | 205 |
1 files changed, 205 insertions, 0 deletions
diff --git a/doc/user/gra_tick b/doc/user/gra_tick new file mode 100644 index 0000000..f6079cf --- /dev/null +++ b/doc/user/gra_tick @@ -0,0 +1,205 @@ +@Section + @Title { Ticks and labels } + @Tag { ticks } +@Begin +@PP +@I Ticks are the short lines that mark off intervals along the axes, and +ticks.graph @Index { ticks in graphs } +labels.graph @Index { labels in graphs } +@I labels are the numbers appearing near the ticks (not to be confused +with captions). {@Code "@Graph"} produces ticks and labels automatically +with some care, so it is probably best not to worry about them unless the +result is not pleasing, in which case there are options for controlling them. +@PP +One simple way to control the production of x ticks is with the +{@Code xmin}, {@Code xmax}, and {@Code xticksep} options to @Code +"@Graph". For example, +@ID @OneRow @Code { +"@Graph" +" xmin { 0 }" +" xmax { 5 }" +" xticksep { 0.5 }" +} +specifies that x values in the range 0 to 5 are to be expected, and that +a tick and label is to appear every 0.5 units along the x axis. One or +both of @Code "xmin" and @Code "xmax" may be omitted, in which case +suitable values will be inferred from the data as usual. +@PP +Alternatively, complete control over the appearance of x ticks and labels +is provided by the @Code "xticks" option. For example, +xticks.graph @Index { @Code "xticks" option to @Code "@Graph" } +@ID @OneRow @Code { +"@Graph" +" xticks { 0@ 5 10@ 15 20@ }" +} +specifies that x ticks are to be drawn at 0, 5, 10, 15, and 20. An +@Code "@" following a number indicates that a label is to be printed as +well, so the above example will produce labels at 0, 10, and 20. For +even finer control, @Code "@" may be replaced by a label enclosed +in parentheses: +@ID @OneRow @Code { +"@Graph" +" xticks { 1 (Democrat) 2 (Republican) 3 (Other) }" +} +As this example shows, a label does not have to be a number; it can be +any string of characters, including spaces and balanced parentheses; +but it may not be an arbitrary Lout object. +@PP +The character @Code "^" in a label indicates that the +remainder is to be treated as an exponent: +@ID @OneRow @Code { +"@Graph" +" xlog { 10 }" +" xticks { 1 (1) 10 (10) 100 (10^2) 1000 (10^3) 10000 (10^4) 100000 (10^5) }" +"{" +" @Data points { plus }" +" { 1 2.1 10 3.4 100 4.9 1000 6.1 10000 7.2 100000 7.6 }" +"}" +} +In fact, the labels inserted automatically when @Code xticks is omitted have +exponents when the axis is logarithmic, so @Code xticks is hardly necessary +in this example. Anyway the result is +@CD @Graph + height { 3 cm } + xlog { 10 } + xticks { 1 (1) 10 (10) 100 (10^2) 1000 (10^3) 10000 (10^4) 100000 (10^5) } +{ + @Data points { plus } + { + 1 2.1 10 3.4 100 4.9 1000 6.1 10000 7.2 100000 7.6 + } +} +Setting @Code "xticks" to empty produces no x ticks (this is not the +same as omitting {@Code xticks}). +@PP +Similar options control ticks and labels on the y axis: {@Code "ymin"}, +{@Code "ymax"}, {@Code "yticksep"}, and {@Code "yticks"}. There are +yticks.graph @Index { @Code "yticks" option to @Code "@Graph" } +also @Code "xticklength" and @Code "yticklength" options which set +the length of ticks: +@ID @OneRow @Code { +"@Graph" +" xticklength { 0.5 ft }" +" yticklength { 0.5 ft }" +} +shows the default values, half the current font size in both cases. +@PP +There is also an {@Code "rticks"} option which is similar to +{@Code "yticks"} except that the ticks it controls appear on the +right-hand side of the frame (this option is relevant only when +the @Code style option is {@Code frame}). Unlike @Code "xticks" and +{@Code "yticks"}, {@Code "rticks"} has empty default value, which is +why you don't usually see r ticks. They are most useful when overstriking +two graphs using @Code "@OverStrike" as explained earlier; one graph will +have y ticks in the usual way, the other will have r ticks and empty +y ticks: +@CD { + +@Graph + style { frame } + width { 6c } + height { 8c } + xextra { 0 cm } + yextra { 0 cm } + rightcaption { -90d @Rotate { Precipitation mm } } + rightgap { 3.0f } + hidecaptions { no } + xmin { 0 } + xmax { 12 } + ymin { 0 } + ymax { 450 } + xticks { } + xticklength { 0 cm } + rticks { 0@ 50@ 100@ 150@ 200@ 250@ 300@ 350@ 400@ 450@ } + yticks {} +{ + @Data + pairs { filledyhisto } + colour { blue } + linewidth { 1 pt } + { + 0 340 + 1 410 + 2 430 + 3 340 + 4 290 + 5 175 + 6 140 + 7 125 + 8 110 + 9 100 + 10 85 + 11 175 + 12 0 + } +} + +@OverStrike + +@Graph + style { frame } + width { 6c } + height { 8c } + xextra { 0 cm } + yextra { 0 cm } + leftcaption { 90d @Rotate { Temperature {@Degree}C } } + leftgap { 2.5f } + hidecaptions { no } + xmin { 0 } + xmax { 12 } + ymin { -30 } + ymax { 50 } + xticks { + 0.5 (J) + 1.5 (F) + 2.5 (M) + 3.5 (A) + 4.5 (M) + 5.5 (J) + 6.5 (J) + 7.5 (A) + 8.5 (S) + 9.5 (O) + 10.5 (N) + 11.5 (D) + } + xticklength { 0 cm } + yticks { -30@ -20@ -10@ 0@ 10@ 20@ 30@ 40@ } +{ + @Data + pairs { solid } + colour { red } + linewidth { 1 pt } + { + 0.0 24 + 1.0 24 + 2.0 25 + 3.0 26 + 4.0 26 + 5.0 26 + 6.0 26 + 7.0 27 + 8.0 26 + 9.0 27 + 10.0 28 + 11.0 28 + 12.0 26 + } +} + +} +Here the first graph has +@ID @Code { +"rticks { 0@ 50@ 100@ 150@ 200@ 250@ 300@ 350@ 400@ 450@ }" +"yticks {}" +} +for its ticks. +@PP +Lout has only a hazy idea of how much space is occupied by ticks and +labels. Unless @Code "xticks" is empty, Lout allows 1.7 times the +current font size below the graph for x ticks and labels, which is +usually about right; but it does not allow any space for y and r ticks and +labels since it has no idea how wide the labels will be. The discussion +of captions in Section {@NumberOf captions} explains how to use the +@Code "leftgap" and @Code "rightgap" options to work around this deficiency. +@End @Section |