[R] contourplot help

David Winsemius dwinsemius at comcast.net
Mon Dec 20 16:08:19 CET 2010


On Dec 20, 2010, at 5:36 AM, Andre Nathan wrote:

> Hello
>
> I'm using the following call to create a contourplot:
>
> library(lattice)
> m <- as.matrix(read.table("data.txt"))
>
> contourplot(m[,3] ~ m[,2] * -m[,1],
>            at = c(1e-6, 1e-5, 1e-4, 1e-3, 1e-2, 1e-1),
>            scales = list(x = list(log = 10,
>                                   labels = c("1", "10", "100"),
>                                   at = c(1, 10, 100)),
>                          y = list(labels = c("14", "12", "10", "8",
>                                              "6", "4", "2")),
>                                   at = c(-14, -12, -10, -8, -6, -4,
>                                          -2)),
>            labels = c(expression(10^-6), expression(10^-5),
>                       expression(10^-4), expression(10^-3),
>                       expression(10^-2), expression(10^-1),
>                       expression(10^0)),
>            xlim = c(0.75, 10^2),
>            xlab = "Out-degree", ylab = "In-degree")
>
>
> Which gives the the output in the file below
>
>  http://ompldr.org/vNm4xag/contour.eps
>
> As it can be seen, the level labels are not displayed nicely because
> there's not enough room for them. Also, the 10^-1 label is not
> displayed.
>
> Is there a way for me to hardcode the position of each label?

I don't see it, but that doesn't mean much unless it is echoed by  
Sarkar or Andrews.

> I tried
> setting labels = F and then calling text() for each one, but that
> doesn't work.

Right, text() is a base graphics function. There are, however, lattice  
functions that supply the same functionality:

?ltext   # = l(attice)text

ltext(x, y = NULL, labels = seq_along(x), col, alpha, cex, srt = 0,  
lineheight, font, fontfamily, fontface, adj = c(0.5, 0.5), pos = NULL,  
offset = 0.5, ...)
You could first see if you can better results by not automatically  
labeling the 10^-6 level, because the -2, -3, -5 levels look ok. That  
might let the 10^-4 label move to a bit less hashed up position and  
then you could put 10^-1 and 10^-6 where you want them

>
> If that's not possible, one option would be to color each level line
> differently and then add a legend. Is it possible to do that?
>
> Finally, how can I remove the tick marks from the top and right axes?

  ..., scales=list(tck=c(1,0)), ...   actually you would add the tck  
list to your existing scales. Found on the ?xyplot page, but tested  
with a modified volcano example from :
?contourplot


>
> Thanks,
> Andre

David Winsemius, MD
West Hartford, CT



More information about the R-help mailing list