[R] text overlap in plot

Peter Ehlers ehlers at ucalgary.ca
Fri Jun 24 17:46:44 CEST 2011


On 2011-06-24 08:00, David Winsemius wrote:
>
> On Jun 24, 2011, at 10:07 AM, David martin wrote:
>
>> Hey,
>> Here is a snippet that generated a boxplot and separates  points so
>> that they do not overlap. I have a problem to avoir text
>> overlapping. Any help would be helpful.
>>
>>>
>> attach(InsectSprays)
>> boxplot(count ~ spray, data = InsectSprays, outpch = NA)
>> stripchart(count ~ spray, data = InsectSprays,
>>            vertical = TRUE, method = "jitter",
>>            pch = 21, col = "maroon", bg = "bisque",
>>            add = TRUE)
>>
>> text(count ~ spray , row.names(InsectSprays), pos=4,cex=0.6)
>> detach(InsectSprays)
>
> Throws an error on my machine. I do not think text has a formula method.

It does now; see the bottom of ?text.
But the command requires that row.names(....) be identified
as the "labels" argument. As it stands, the positional
interpretation of row.names(....) makes it the "data"
argument.

And it would be better to use the "data" argument than to attach/detach.

Peter Ehlers

>
> This gets part of the way there using the spreadout function in
> plotrix, but it apparently needs to be set up so that it only gets
> applied within each category:
>
> require(plotrix)
> with(InsectSprays,  text(spray, spreadout(count,
> 0.3),labels=rownames(InsectSprays), pos=4, cex=0.5) )
>
> So, since InsectSprays is sorted by 'spray', and spreadout preserves
> the order of its arguments, using tapply should not mess up the order:
>
> with(InsectSprays,  text(spray,
>           unlist( tapply(InsectSprays$count, InsectSprays$spray,
> spreadout, mindist=0.2) ) ,
>           labels=rownames(InsectSprays), pos=4, cex=0.5) )
>
> Seems pretty close.



More information about the R-help mailing list