Thanks Ulrich for sharing your experience.

I'm attaching a patch which tries to address the issues you raised.

I agree with you in principle, but I think it makes sense to leave
some details under "Details". However, the descriptions in "Arguments"
should give enough information that a user can get the function to do
something predictable in at least one situation, and I feel this is
not the case at present.

I tried to fix the wording so that 'adj' and 'offset' are no longer
confusing to new users (or to me, every time I forget what they mean).

I also fixed the paragraph on rotated text; it is more correct now, at
least for X11-cairo.

I hope that someone in the Core Team can look this over and apply it.

Thank you,

Frederick

On Tue, Apr 11, 2017 at 09:23:50AM +0200, Ulrich Windl wrote:
> Hi!
> 
> (I'd like to be able to access your bugzilla, BTW)
> The documentation for parameter "adj" of text() in R 3.3.3 is hard to 
> understand (unless you know what it does already):
> 
> "adj 
> one or two values in [0, 1] which specify the x (and optionally y) adjustment 
> of the labels. On most devices values outside that interval will also work."
> 
> What is the meaning of the values? I think the description ("adj allows 
> adjustment of the text with respect to (x, y). Values of 0, 0.5, and 1 
> specify left/bottom, middle and right/top alignment, respectively. The 
> default is for centered text, i.e., adj = c(0.5, NA). Accurate vertical 
> centering needs character metric information on individual characters which 
> is only available on some devices. Vertical alignment is done slightly 
> differently for character strings and for expressions: adj = c(0,0) means to 
> left-justify and to align on the baseline for strings but on the bottom of 
> the bounding box for expressions. This also affects vertical centering: for 
> strings the centering excludes any descenders whereas for expressions it 
> includes them. Using NA for strings centers them, including descenders.") 
> should be moved to the parameter.
> 
> In general I'd suggest to describe the range, meaning and default of every 
> parameter where the parameter is listed. "Details" should only give an 
> overview of the functions.
> 
> Likewise "offset": Will the direction be influenced by "pos"? The description 
> is quite silent on that.
> 
> Documentation should be structured to help the user to find the facts easily 
> without having to read the whole page.
> 
> Regards,
> Ulrich Windl
> 
> ______________________________________________
> R-devel@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
> 
--- text.Rd	2016-11-27 18:33:26.541516325 -0800
+++ new-text.Rd	2017-04-11 11:48:32.668926075 -0700
@@ -26,16 +26,18 @@
     If \code{labels} is longer than \code{x} and
     \code{y}, the coordinates are recycled to the length of \code{labels}.}
   \item{adj}{one or two values in \eqn{[0, 1]} which specify the x
-    (and optionally y) adjustment of the labels.  On most devices values
-    outside that interval will also work.}
+    (and optionally y) justification of the labels, with 0 for
+    left/bottom, 1 for right/top, and 0.5 for centered.
+    On most devices values
+    outside \eqn{[0, 1]} will also work. See below.}
   \item{pos}{a position specifier for the text.  If specified this
     overrides any \code{adj} value given.  Values of \code{1},
     \code{2}, \code{3} and \code{4}, respectively indicate
     positions below, to the left of, above and to the right of
-    the specified coordinates.}
-  \item{offset}{when \code{pos} is specified, this value gives the
-    offset of the label from the specified coordinate in fractions
-    of a character width.}
+    \code{(x, y)}.}
+  \item{offset}{when \code{pos} is specified, this value controls the
+    distance of the text label from \code{(x, y)}, in fractions of a
+    character width.}
   \item{vfont}{\code{NULL} for the current font family, or a character
     vector of length 2 for Hershey vector fonts.  The first element of
     the vector selects a typeface and the second element selects a
@@ -62,10 +64,11 @@
   mathematical notation is available such as sub- and superscripts,
   greek letters, fractions, etc.
 
-  \code{adj} allows \emph{adj}ustment of the text with respect to
+  \code{adj} allows \emph{adj}ustment of the text position with respect to
   \code{(x, y)}.
-  Values of 0, 0.5, and 1 specify left/bottom, middle and
-  right/top alignment, respectively.  The default is for centered text, i.e.,
+  Values of 0, 0.5, and 1 specify that \code{(x, y)} should align with
+  the left/bottom, middle and
+  right/top of the text, respectively.  The default is for centered text, i.e.,
   \code{adj = c(0.5, NA)}.  Accurate vertical centering needs
   character metric information on individual characters which is
   only available on some devices.  Vertical alignment is done slightly
@@ -81,8 +84,17 @@
   labelled plot.
 
   Text can be rotated by using \link{graphical parameters} \code{srt}
-  (see \code{\link{par}}); this rotates about the centre set by
-  \code{adj}.
+  (see \code{\link{par}}). When \code{adj} is specified, a non-zero
+  \code{srt} rotates the label about \code{(x, y)}. If \code{pos} is
+  specified, \code{srt} rotates the text about the point on its bounding
+  box which is closest to \code{(x, y)}: top center for \code{pos = 1},
+  right center for \code{pos = 2}, bottom center for \code{pos = 3}, and
+  left center for \code{pos = 4}. The \code{pos} interface is not as
+  useful for rotated text because the result is no longer centered
+  vertically or horizontally with respect to \code{(x, y)}. At present
+  there is no interface in the base libraries to directly rotate text
+  about its center, but you can achieve this by fiddling with \code{adj}
+  each time you change \code{srt}.
 
   Graphical parameters \code{col}, \code{cex} and \code{font} can be
   vectors and will then be applied cyclically to the \code{labels} (and
______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to