Re: [R] How to annotate a graph with non-transparent math labels?

From: jim holtman <jholtman_at_gmail.com>
Date: Wed 17 Jan 2007 - 22:30:37 GMT

try using strwidth & strheight

x<-c(0,1)
plot(x,x,type='l')
dimensions<-matrix(c(strwidth(expression(theta),cex=5),strheight(expression(theta), cex=5)),nrow=1)
symbols(0.5,0.5
,rectangle=dimensions,bg='white',fg='white',add=TRUE,inches=FALSE) text(0.5,0.5,expression(theta),cex=5)

On 1/17/07, Luis A Escobar <luis@lsu.edu> wrote:
>
> I do not know the precise language to describe the situation. But here
> it is what I want to do.
>
> I need to annotate a graph that contains two or more curves with labels
> that contain math symbols. The label must go on top of the curve.
>
> The problem is that when I annotate the plot, I can see the curve
> behind the label. Here it is an example using a simple straight line.
>
> x<-c(0,1)
> plot(x,x,type='l')
> text(0.5,0.5,expression(theta),cex=3)
>
> The line is visible inside the theta symbol. I would like to avoid that.
>
> Following the solution to problem 3.2 in the ISwR book, for a related
> problem, I used the symbols package to write a rectangle (it can a
> circle, etc)
> with white bf and white fg and then write the label on top of that
> rectangle.
>
> Here is it is the code
>
> x<-c(0,1)
> plot(x,x,type='l')
> text(0.5,0.5,expression(theta),cex=3)
> xmax<-max(abs(x))
> dimensions<-matrix(c(xmax/24,xmax/24),nrow=1)
> symbols(0.5,0.5,rectangle=dimensions,bg='white',fg='white',add=TRUE,inch
> es=FALSE)
> text(0.5,0.5,expression(theta),cex=3)
>
> It seems to work, but I am not happy with this solution. The symbols
> statement above has fixed dimensions and does not work well with
> multiple labels of different sizes. With multiple curves the symbols
> statement might peel off other curves, axis, etc. Also if one changes
> the size of the label (using cex), the size of the "rectangle" might
> be too big or too small and it has to be adjusted.
>
> What I would like to have is a simple way to write the label over the
> line such
> that the label only wipes out what is needed to avoid seeing the curve
> behind. It is like I need a rectangles with rubbery dimensions to
> contain just the label I am writing.
>
> I searched the FAQ questions for related problems but I did not find
> something related.
>
> My R skills are very rudimentary and I would not surprised the
> solution is trivial.
>
> Thank you for any help.
>
> Luis Escobar
>
> ______________________________________________
> R-help@stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
> http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>

-- 
Jim Holtman
Cincinnati, OH
+1 513 646 9390

What is the problem you are trying to solve?

	[[alternative HTML version deleted]]

______________________________________________
R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
Received on Thu Jan 18 09:44:00 2007

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.1.8, at Wed 17 Jan 2007 - 23:31:49 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.