diff options
Diffstat (limited to 'doc/user/gra_data')
-rw-r--r-- | doc/user/gra_data | 267 |
1 files changed, 267 insertions, 0 deletions
diff --git a/doc/user/gra_data b/doc/user/gra_data new file mode 100644 index 0000000..323f155 --- /dev/null +++ b/doc/user/gra_data @@ -0,0 +1,267 @@ +@Section + @Title { Changing the appearance of the data } + @Tag { data } +@Begin +@PP +The @Code "@Data" symbol has options for controlling the +data. @Index @Code "@Data" +appearance of its data. We have already seen the +@Code "points" option, which controls what is printed at each data +point: +points.graphs @Index { @Code "points" option in graphs } +@CD @Tab + vmargin { 0.5vx } + @Fmta { @Col @Code A ! @Col B ! @Col ! @Col @Code C ! @Col D } +{ +@Rowa + A { cross } + B { @GraphCross } + C { plus } + D { @GraphPlus } +@Rowa + A { square } + B { @GraphSquare } + C { filledsquare } + D { @GraphFilledSquare } +@Rowa + A { diamond } + B { @GraphDiamond } + C { filleddiamond } + D { @GraphFilledDiamond } +@Rowa + A { circle } + B { @GraphCircle } + C { filledcircle } + D { @GraphFilledCircle } +@Rowa + A { triangle } + B { @GraphTriangle } + C { filledtriangle } + D { @GraphFilledTriangle } +} +If the @Code "points" option is omitted or empty, nothing is printed. The +symbols are centred over the data point. There is a @Code "symbolsize" +option which controls the size (radius) of all these symbols: +symbolsize. @Index { @Code "symbolsize" option in graphs } +@ID @OneRow @Code { +"@Data" +" symbolsize { 0.15 ft }" +} +shows the default, 0.15 times the current font size. More +precisely, the default value is taken from an option +to the @Code "@Graph" symbol, also called {@Code "symbolsize"}. By +setting that option you can therefore set the symbol size of all data +points in the graph at once; its default value is {@Code "0.15 ft"}. +@PP +The @Code "@Data" symbol also has a @Code "pairs" option which +pairs. @Index { @Code "pairs" option in graphs } +determines how each pair of points is connected. The choices are +@Code none (not connected, the default), @Code solid (a solid line), +@Code dashed (a dashed line), or @Code dotted (a dotted line). For +example, +@ID @OneRow @Code { +"@Graph" +" abovecaption { Estimated population of Boston, New York, and Philadelphia }" +"{" +" @Data points { plus } pairs { solid }" +" { 1720 12000 1730 13000 1740 15601 1760 15631 1770 15877 }" +"" +" @Data points { plus } pairs { dashed }" +" { 1720 7000 1730 8622 1740 10451 1750 14255 1760 18000 1770 22667 }" +"" +" @Data points { plus } pairs { dotted }" +" { 1720 10000 1730 11500 1740 12654 1750 18202 1760 23750 1770 34583 }" +"}" +} +produces +@CD @Graph + abovecaption { Estimated population of Boston, New York, and Philadelphia +} +{ + @Data points { plus } pairs { solid } + { 1720 12000 1730 13000 1740 15601 1760 15631 1770 15877 } + + @Data points { plus } pairs { dashed } + { 1720 7000 1730 8622 1740 10451 1750 14255 1760 18000 1770 22667 } + + @Data points { plus } pairs { dotted } + { 1720 10000 1730 11500 1740 12654 1750 18202 1760 23750 1770 34583 } + +} +(R. C. Simmons, @I { The American Colonies }, W. W. Norton, New York, +1981.) We will see in Section {@NumberOf key} how to add an explanatory key to +this graph. If the points have symbols, these connecting lines will stop 1.5 +symbolsizes away from the data points, so as not to overstrike them. If +the points have no symbols and @Code "pairs" is {@Code "dashed"}, the +first and last dash in each segment will have half the length of the +others. +@PP +A @Code "dashlength" option controls the length of dashes and also the +separation between dots, and a @Code "linewidth" option controls the +width (thickness) of the lines and dots: +@ID @OneRow @Code { +"@Data" +" dashlength { 0.2 ft }" +" linewidth { 0.5 pt }" +"{" +" ..." +"}" +} +This shows the default values, {@Code "0.2 ft"} for @Code "dashlength" +and {@Code "0.5 pt"} (half a point) for {@Code "linewidth"}. Actually +the default value for @Code "linewidth" is whatever happens to be +already in use, but Lout sets line widths to half a point initially. +This option also controls the separation between bars in histograms. +@PP +The @Code "pairs" option is also used for producing histograms, like +histograms. @Index { histograms } +this: +@ID @OneRow @Code { +"@Graph" +" hidecaptions { yes }" +" abovecaption { Computer Science 3 Results (1993) }" +" leftcaption { Number of" +"students }" +" belowcaption { Final mark (%) }" +" yextra { 0 cm }" +" ymax { 80 }" +"{" +" @Data pairs { yhisto }" +" { 0 1 10 3 20 2 30 4 40 15 50 60 60 58 70 28 80 15 90 7 100 0 }" +"}" +} +which has result +@CD @Graph + hidecaptions { yes } + abovecaption { Computer Science 3 Results (1993) } + leftcaption { Number of +students } + belowcaption { Final mark (%) } + yextra { 0 cm } + ymax { 80 } +{ + @Data + pairs { yhisto } + { 0 1 10 3 20 2 30 4 40 15 50 60 60 58 70 28 80 15 90 7 100 0 } +} +Note carefully that one y histogram rectangle occupies the space from +one x value to the next, with height equal to the y value lying between +these two x values. This means that the very last y value has no effect +on the result (however, there must be a last y value anyway). +@PP +There is an alternative to @Code "yhisto" called {@Code "surfaceyhisto"}: +@CD @Graph + hidecaptions { yes } + abovecaption { Computer Science 3 Results (1993) } + leftcaption { Number of +students } + belowcaption { Final mark (%) } + yextra { 0 cm } + ymax { 80 } +{ + @Data + pairs { surfaceyhisto } + { 0 1 10 3 20 2 30 4 40 15 50 60 60 58 70 28 80 15 90 7 100 0 } +} +As you can see, @Code "surfaceyhisto" draws just the surface of the +histogram, not the descending lines. +@PP +There are @Code "xhisto" and @Code "surfacexhisto" values of +@Code "pairs" which produce a histogram whose bars are parallel to +the x axis. There are also {@Code "filledyhisto" } and +{@Code "filledxhisto" } values which produce filled rectangles rather +than outlined ones: +@ID @OneRow @Code { +"@Graph" +" abovecaption { Fertility rates in some developing countries }" +" xextra { 0 cm }" +" yextra { 0 cm }" +" xmax { 8 }" +" yticks {" +" 1.5 (Turkey) 2.5 (Thailand)" +" 3.5 (Indonesia) 4.5 (Costa Rica)" +" 5.5 (Colombia) 6.5 (Cameroon)" +" 7.5 (Botswana) 8.5 (Bangladesh)" +" }" +" yticklength { 0 cm }" +"{" +" @Data" +" pairs { filledxhisto }" +" { 0 1 3.2 2 2.2 3 3.0 4 3.5 5 2.8 6 5.9 7 4.8 8 5.3 9 }" +"}" +} +produces +@CD @Graph + abovecaption { Fertility rates in some developing countries + } + xextra { 0 cm } + yextra { 0 cm } + xmax { 8 } + yticks { 1.5 (Turkey) 2.5 (Thailand) 3.5 (Indonesia) 4.5 (Costa Rica) + 5.5 (Colombia) 6.5 (Cameroon) 7.5 (Botswana) 8.5 (Bangladesh) } + yticklength { 0 cm } +{ + @Data + pairs { filledxhisto } + { 0 1 3.2 2 2.2 3 3.0 4 3.5 5 2.8 6 5.9 7 4.8 8 5.3 9 } +} +(Bryant Robey, Shea O. Rutstein, and Leo Morros: The fertility decline in +developing countries, @I { Scientific American }, December 1993.) Once +again each bar goes from one y value to the next, with its x value +equal to the x value lying between the two y values; this time the very +first x value has no effect on the result. +@PP +The colour of one set of data can be changed with a @Code "colour" +option: +@ID @OneRow @Code { +"@Data" +" colour { blue }" +} +For the complete list of acceptable colour names, see Section +{@NumberOf colour}. The @Code "colour" option's name may also be +spelt @Code {"color"}. +@PP +It is also possible to paint the area between the data points and +the x axis (or frame if @Code "style" is not {@Code "axes"}), using +@ID @OneRow @Code { +"@Data" +" paint { yes }" +} +The paint colour is determined by the @Code "colour" option just +introduced; it will be @Code "black" if no colour is specified. Paint +(including white paint) hides paint, points, and lines drawn by previous +data sets. However the points and lines of each data set are drawn after +painting that set, so they cannot be hidden under their own paint; and +axes and frames are drawn last so that they too are never hidden. +@PP +A @Code "dataformat" option is provided for changing the interpretation +dataformat. @Index { @Code "dataformat" option in graphs } +of the data. Ordinarily, as we know, the numbers are taken to be pairs of +x and y coordinates, like this: +@ID @OneRow @Code { +"@Data" +"{" +" x y x y ... x y" +"}" +} +However, by setting @Code "dataformat" to {@Code "yonly"}, the +interpretation is changed to a sequence of y coordinates only: +@ID @OneRow @Code { +"@Data" +" dataformat { yonly }" +"{" +" y y ... y" +"}" +} +and x values 1, 2, and so on are inserted automatically, just as though +the original input had been +@ID @OneRow @Code { +"@Data" +"{" +" 1 y 2 y ..." +"}" +} +There is also {@Code "xonly"}, which inserts y values 1, 2, and so on. The +default value, {@Code "xandy"}, gives the usual interpretation. The +layout of data on lines has no effect on the interpretation. +@End @Section |