[R] childNames for xaxis grob (grid package)
Tobias Verbeke
tobias.verbeke at telenet.be
Thu Jul 10 09:27:22 CEST 2008
Hi Paul,
>> Can someone explain why the childNames below
>> gives
>>
>> character(0)
>>
>> instead of the (canonical) names of the children grobs
>> of the xaxis gTree ?
>>
>> [1] "major" "ticks" "labels"
>
>
> The problem is that you xaxis has an 'at' component of NULL, which means
> that the axis calculates its tick marks on-the-fly when it comes time to
> draw (it has to ask the current viewport what the current scale is).
>
> This means that there are no grobs representing the major, ticks, and
> labels stored with the xaxis grob on the display list. These are
> generated just to draw then thrown away.
>
> If you want to modify the look of the grobs that are drawn (then thrown
> away), you can use the 'edits' component of the xaxis. This provides an
> edit that will be applied whenever the children are created for drawing.
>
> Simple example (assuming your code below has been run) ...
>
> grid.edit("xa", edits=gEdit("labels", rot=45))
Thank you very much for the detailed explanation. I was trying
to find the grid equivalent of the following base graphics code
atPositions <- axis(2, labels = FALSE)
axis(2, at = atPositions, labels = 10^atPositions)
i.e. use the 'at' to make appropriate labels. I guess there is
no way to do this without passing a (self-made) 'at' to grid.xaxis
in the first place as in
library(grid)
pushViewport(plotViewport(c(5,4,4,2)))
set.seed(120)
xData <- rpois(5, 12)
yData <- rpois(5, 12)
pushViewport(dataViewport(xData, yData))
grid.points(xData, yData)
atPositions <- grid.pretty(current.viewport()$xscale)
grid.xaxis(name = "xa", at = atPositions, label = 10^atPositions)
Thanks again,
Tobias
P.S. Maybe the above could be used to populate the
\examples{} section of grid.pretty ?
>> ### minimal example code ###
>>
>> library(grid)
>> pushViewport(plotViewport(c(5,4,4,2)))
>> pushViewport(dataViewport(1:5, 1:5))
>> grid.points(1:5, 1:5)
>> grid.xaxis(name = "xa")
>> grid.get("xa")
>> childNames(grid.get("xa"))
More information about the R-help
mailing list