[R] Change color in forest.rma (metafor)

Uwe Ligges ligges at statistik.tu-dortmund.de
Sun Aug 28 17:32:33 CEST 2011



On 26.08.2011 15:50, Paola Tellaroli wrote:
> I lied, that was not my last question: how can I add two arrows at the
> bottom with the words "in favor of A / B"? This is not specified in the pdf
> and with "text" I have the impression that I can't add text below the
> x-axis.

You can, see ?par and its "xpd" argument.

Uwe Ligges



>
>
> 2011/8/26 Paola Tellaroli<paola.tellaroli at gmail.com>
>
>> Dear Prof. Viechtbauer,
>> thank you so much for your help and kindness.
>>
>> Clearly graphs are the minor problem in our work, and the parameters and
>> options that can vary in R are so many that it is obvious that you can not expect
>> to change everything you want!
>>
>> Your suggestions are very helpuf, but I have one last question. I'm trying
>> to copy the style of a forest plot that I've seen and I like (the one in the
>> attached file, page 1034): can I do this in R?
>>
>> Best wishes,
>>
>> *Paola*
>>
>>
>>
>> 2011/8/25 Viechtbauer Wolfgang (STAT)-2 [via R]<
>> ml-node+3768683-1225159815-262246 at n4.nabble.com>
>>
>>> The color of the squares is also currently hard coded.
>>>
>>> The thing is, there are so many different elements to a forest plot
>>> (squares, lines, polygons, text, axes, axis labels, etc.), if I would add
>>> arguments to set the color of each element, things would really get out of
>>> hand (as far as I am concerned, there are already too many arguments to
>>> begin with). I can think of one possibility: I could allow the col argument
>>> to accept a vector of colors and then apply the different elements of that
>>> vector to the various elements in the plot. Of course, there is also a limit
>>> to how far that can be taken. For example, what if somebody wants to have a
>>> different color for *one* of the squares and a different color for the other
>>> squares?
>>>
>>> Another possibility is to do some post-processing with other software. One
>>> can create the forest plot in R, save it for example as a postscript file,
>>> and the edit the plot in other software. Yes, I prefer it if I can create
>>> the plot in R and have it exactly the way I want it (without having to do
>>> any post-processing), but sometimes that may not be possible.
>>>
>>> Note that you can always add whatever you want to a plot created by the
>>> forest() function after it has been drawn. You can add text, lines, squares,
>>> polygons, whatever in any color you desire (e.g., with the text(),
>>> segments(), points(), polygon() functions). So, you could also just plot
>>> over the squares with:
>>>
>>> points(yi, 4:1, pch=15, col="red")
>>>
>>> To get rid of the black squares that are drawn by the forest function, add
>>> psize=0 as an argument in forest() (this will make the size of squares equal
>>> to 0, so essentially, they are invisible).
>>>
>>> If you want to make the size of the points inversely proportional to some
>>> function of the precision of the estimates, use points() together with the
>>> cex argument. For example:
>>>
>>> wi<- 1/sqrt(vi)
>>> psize<- wi/sum(wi)
>>> psize<- (psize - min(psize)) / (max(psize) - min(psize))
>>> psize<- (psize * 1.0) + 0.5
>>> points(yi, 4:1, pch=15, col="red", cex=psize)
>>>
>>> Best,
>>>
>>> Wolfgang
>>>
>>>> -----Original Message-----
>>>> From: Paola Tellaroli [mailto:[hidden email]<http://user/SendEmail.jtp?type=node&node=3768683&i=0>]
>>>
>>>> Sent: Thursday, August 25, 2011 10:57
>>>> To: Viechtbauer Wolfgang (STAT)
>>>> Cc: [hidden email]<http://user/SendEmail.jtp?type=node&node=3768683&i=1>;
>>> Bernd Weiss
>>>> Subject: Re: [R] Change color in forest.rma (metafor)
>>>>
>>>> Thank you for your attention and help!
>>>>
>>>> In this way I get the diamond coloured, but actually I would have the
>>>> squares representing the values of the individual studies coloured. Is
>>> it
>>>> somehow possible?
>>>>
>>>> Paola
>>>>
>>>>
>>>> 2011/8/24 Viechtbauer Wolfgang (STAT)
>>>> <[hidden email]<http://user/SendEmail.jtp?type=node&node=3768683&i=2>>
>>>
>>>> Thank you, Bernd, for looking into this.
>>>>
>>>> Yes, at the moment, the color of the summary estimate for models without
>>>
>>>> moderators is hard-coded (as black). I didn't think people may want to
>>>> change that. I guess I was wrong =)
>>>>
>>>> A dirty solution for the moment is to add:
>>>>
>>>> addpoly(dfs, efac=6, row=-1, col="red", border="red", annotate=F,
>>> mlab="")
>>>>
>>>> after the call to forest(). You will get a warning message (since the
>>>> border argument gets passed to the text() function inside addpoly() and
>>>> that's not a par for text), but you can just ignore that.
>>>>
>>>> Best,
>>>>
>>>> --
>>>> Wolfgang Viechtbauer
>>>> Department of Psychiatry and Neuropsychology
>>>> School for Mental Health and Neuroscience
>>>> Maastricht University, P.O. Box 616
>>>> 6200 MD Maastricht, The Netherlands
>>>> Tel: +31 (43) 368-5248
>>>> Fax: +31 (43) 368-8689
>>>> Web: http://www.wvbauer.com
>>>>
>>>>
>>>>> -----Original Message-----
>>>>> From: Bernd Weiss [mailto:[hidden email]<http://user/SendEmail.jtp?type=node&node=3768683&i=3>]
>>>
>>>>> Sent: Wednesday, August 24, 2011 16:22
>>>>> To: Paola Tellaroli
>>>>> Cc: [hidden email]<http://user/SendEmail.jtp?type=node&node=3768683&i=4>;
>>> [hidden email]<http://user/SendEmail.jtp?type=node&node=3768683&i=5>
>>>>> Subject: Re: [R] Change color in forest.rma (metafor)
>>>>>
>>>>> Am 24.08.2011 07:50, schrieb Paola Tellaroli:
>>>>>> My script is the following:
>>>>>>
>>>>>> library(metafor)
>>>>>>
>>>>>> yi<-c(-0.1, 0.2, 0.3, 0.4)
>>>>>> sei<-c(0.4, 0.2, 0.6, 0.1)
>>>>>> vi<-sei^2
>>>>>> studi<-c("A", "B", "C", "D")
>>>>>> eventi.c<-c(10, 5, 7, 6)
>>>>>> n.c<-c(11, 34, 25, 20)
>>>>>> eventi.a<-c(2, 7, 6, 5)
>>>>>> n.a<-c(11, 35, 25, 15)
>>>>>> dfs<-rma(yi, vi, method="DL")
>>>>>> dfs
>>>>>>
>>>>>> windows(height=6, width=10, pointsize=10)
>>>>>> windowsFonts(B=windowsFont("Bookman Old Style"))
>>>>>>
>>>>>> forest.rma(dfs, slab=studi, xlim=c(-15, 10), ilab=cbind(eventi.c,
>>> n.c,
>>>>>> eventi.a, n.a), ilab.xpos=c(-9.5, -8, -6, -4.5), cex=1.2, at=c(-2,
>>> -1,
>>>>> 0, 1,
>>>>>> 2), family="B", xlab="Hazard Ratio (log scale)", mlab="Random
>>> Effects
>>>>>> Model", efac=5, col="red", border="red")
>>>>>> text(-10, -1.3, paste("Heterogeneity: I-squared=",
>>>>> paste(paste(round(dfs$I2,
>>>>>> 2), "%", sep=""), paste("p", round(dfs$QEp, 4), sep="="), sep=", "),
>>>
>>>>>> sep=""), font=4, cex=1.2, family="B")
>>>>>>
>>>>>> op<-par(cex=1.2, font=2, family="B", oma=c(0.5, 0.5, 0.5, 0.5),
>>>>> mar=c(0.5,
>>>>>> 0.5, 0.5, 0.5))
>>>>>> text(x=c(-9.5, -8, -6, -4.5), 6, c("Events", "N", "Events", "N"),
>>>>> cex=1.2 )
>>>>>> text(c(-8.7, -5.5, 8), 6.5, c("S", "A", "Log"))
>>>>>> text(-15, 6, "Trials", pos=4)
>>>>>> text(10, 6, "Hazard Ratio [95% CI]", pos=2)
>>>>>> par(op)
>>>>>>
>>>>>> Even if I have specified "col="red", border="red"", color of squares
>>>
>>>> and
>>>>>> diamond rests black! Why?
>>>>>
>>>>> As far as I know, "col" and "border" do only affect the fitted values
>>>>> ("diamonds"), i.e. the FEM/REM estimators (see ?forest.rma: "col:
>>>>> character string specifying the name of a color to use for _the
>>> fitted_
>>>>> values ('"darkgray"' by default).")
>>>>>
>>>>> Furthermore, I had a quick look at the source code and it might be a
>>>>> bug. If I replace in line 2770 the line
>>>>>
>>>>> cex * efac), col = "black", ...)
>>>>>
>>>>> with
>>>>>
>>>>> cex * efac), col = col, ...)
>>>>>
>>>>> you can at least specify your own colour. Changing the border color
>>>>> seems a bit more tricky...
>>>>>
>>>>> However, Wolfgang Viechbauer (the package author) is always a very
>>>>> responsive and helpful person and I suggest you better wait for his
>>>>> answer.
>>>>>
>>>>> Bernd
>>>
>>> ______________________________________________
>>> [hidden email]<http://user/SendEmail.jtp?type=node&node=3768683&i=6>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.
>>>
>>>
>>> ------------------------------
>>>   If you reply to this email, your message will be added to the discussion
>>> below:
>>>
>>> http://r.789695.n4.nabble.com/Change-color-in-forest-rma-metafor-tp3765090p3768683.html
>>>   To unsubscribe from Change color in forest.rma (metafor), click here<http://r.789695.n4.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=3765090&code=cGFvbGEudGVsbGFyb2xpQGdtYWlsLmNvbXwzNzY1MDkwfDQzMzczMjk1Ng==>.
>>>
>>>
>>
>>
>
>
> --
> View this message in context: http://r.789695.n4.nabble.com/Change-color-in-forest-rma-metafor-tp3765090p3770899.html
> Sent from the R help mailing list archive at Nabble.com.
> 	[[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at r-project.org 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.



More information about the R-help mailing list