To whom it may concern,

This bug report is for GNU graph; the bug appears to exist in all versions
based on the current (post-1995) plotutils, but the bug was not present in
the earlier GNU version of graph that was part of the 1991 "GNU Graphics
Utilities" package.

GNU graph is a missing an important feature that makes it unable to process
a large class of data files supported by UNIX V7 graph (and all subsequent
versions of graph derived from it) and by the graph that was distributed as
part of the GNU Graphics Utilities.  Particularly, the default "ASCII"
format to GNU graph supports only numbers specifying the point location
(either coordinate pairs, or single values if the --auto-abscissa option is
specified) and does not support the optional label for the point that is
supported by UNIX V7 graph.  In fact, GNU graph stops processing a data
file without any error diagnostic as soon as it encounters the first label.

While stopping processing without any error diagnostic is clearly a bug, it
seems more of an oversight that the point label functionality was not
included in the current GNU graph.  The comprehensive plotutils
documentation describes the various data formats, and labels are not
mentioned.  In other words, the lack of point labels is consistent with the
current GNU graph's documentation.  (But not with the previous GNU Graphics
Utilities graph's documentation, which describes point labels in the data
format in some detail.)

I find it odd that this functionality was not included in the replacement
for the earlier GNU graph, because the text rendering capabilities of the
modern GNU graph (as exercised, for example, by axis labels) are vastly
superior to what was available in either V7 graph or the GNU graphics
version of graph, but support for files containing point labels was not
implemented.  I consider this a bug, but if it was a conscious
implementation decision to make GNU graph incompatible with UNIX V7 graph
and the previous GNU version, I suggest reconsidering that decision.

For reference, the relevant portion of the UNIX V7 graph(1g) manual is
provided below.  I underlined the key language concerning the supported
data format.

*NAME*
        graph – draw a graph

*SYNOPSIS*
        graph [ option ] ...

*DESCRIPTION*
        *Graph* with no options takes pairs of numbers from the standard
input as abscissas and ordinates of a graph. Successive points are
connected by straight lines. The graph is encoded on the standard output
for display by the *plot*(1) filters.

        *If the coordinates of a point are followed by a nonnumeric string,
that string is printed as a label beginning on the point. Labels may be
surrounded with quotes "...", in which case they may be empty or contain
blanks and numbers; labels never contain newlines.*

...

And here is the description of point labels in graph data files from the
former GNU implementation, in the GNU Graphics Utilities documentation:
The format of input to graph
<http://www.math.utah.edu/docs/info/graphics_toc.html#SEC4>

As mentioned above, by default graph reads ascii pairs of values, x and y
coordinates, from the standard input or files specified on the command
line. *Optional labels may be placed after each coordinate in the data
file. The label ends at the end of the line: *

*3.0  0.4 this is a label for point (3.0, 0.4).
*

* The label must be enclosed in double quotes if it would otherwise be
appear to be a coordinate: *

*3.0  0.4 "5.0 looks like a value."*

You can use the `-b' to break lines after each label in the input. Use a
pair of empty double quotes if you need to break a line, but do not need a
label.

0.0  0.0
2.0  0.0
1.0  0.2
""
0.0  0.1
2.0  0.2
4.0  0.3

You can also break cuves using `-M' option to break lines whenever the
abscissal values between successive pairs of points decrease. When using
`-M', each continuous curve has monotonically increasing abscissal values.

0.0  0.0 *first data set*
2.0  0.0
4.0  0.2
0.0  0.1 *second data set
*2.0  0.2
4.0  0.3

graph will automatically generate abscissal values for you if you specify
the `-a' option. Only ordinate values are given in the data, and the data
is then assumed to be equally sampled along the abscissa. The values
following `-a' on the command line specify the sampling interval and the
abscissal value of the first data point.
0.0 0.1 0.2 *label for point (2.0, 0.2)* 0.3 0.2 0.3


Thank you.

Sincerely,

Robert L. Masterson
[email protected]
_______________________________________________
Bug-plotutils mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/bug-plotutils

Reply via email to