[R] Legend text populated with calculated values and super script?

Douglas M. Hultstrand dmhultst at metstat.com
Mon Feb 10 16:11:20 CET 2014


Thanks everyone for the help.  Dennis, the bquote version work great.
Thanks,
Doug
On 2/7/2014 7:08 PM, Dennis Murphy wrote:
> Here's a bquote version:
>
> x=c(1,2,3,4);  y=c(1,2,3,4); z=c(1.25,1.5,2.5,3.5)
>
> # first stats based on data, used to populate legend
> wdt_n = 50;  wdt_mbias = 0.58
> wdt_mae = 2.1;  wdt_R2 = 0.85
> # second stats based on data, used to populate legend
> spas_n = 50; spas_mbias = 0.58
> spas_mae = 2.1; spas_R2 = 0.85
>
> wleg <- bquote(paste("WDT (", N == .(wdt_n), ", ",
>                 Bias == .(wdt_mbias), ", ",
>                 MAE == .(wdt_mae), ", ",
>                 R^2 == .(wdt_R2), ")"))
> sleg <- bquote(paste("SPAS (", N == .(spas_n), ", ",
>                 Bias == .(spas_mbias),
>                 ", ", MAE == .(spas_mae),
>                 ", ", R^2 == .(spas_R2), ")"))
>
> plot(x,y, col="red1", pch=1); lines(x,z, type="p", col="green4",pch=3)
>
> legend("topleft", legend = as.expression(c(sleg, wleg)),
> col=c("red1","green4"), pch=c(1,3),
>                    cex=0.85)
>
> Dennis
>
> On Fri, Feb 7, 2014 at 4:58 PM, David Winsemius <dwinsemius at comcast.net> wrote:
>> On Feb 7, 2014, at 7:54 AM, Douglas M. Hultstrand wrote:
>>
>>> Hello,
>>>
>>> I am trying to generate a plot legend that contains calculated summary
>>> statistics, one statistic is R^2.  I have tried several variations using
>>> the commands "expression" and "bqoute" as stated on the R help pages.  I
>>> have not been able to get the R^2 super script correct along with the
>>> calculated statistics.
>>>
>>> I provided an example below, what I want is the legend (wdt_leg and
>>> spas_leg) as below but with the R^2 as superscript.
>>>
>>> # Example Data
>>> x=c(1,2,3,4);  y=c(1,2,3,4); z=c(1.25,1.5,2.5,3.5)
>>>
>>> # first stats based on data, used to populate legend
>>> wdt_n = 50;  wdt_mbias = 0.58
>>> wdt_mae = 2.1;  wdt_R2 = 0.85
>>> # second stats based on data, used to populate legend
>>> spas_n = 50; spas_mbias = 0.58
>>> spas_mae = 2.1; spas_R2 = 0.85
>>>
>>> # create legend
>>> wdt_leg <- paste("WDT (N = ", wdt_n,", Bias = ",wdt_mbias,", MAE =
>>> ",wdt_mae, ", R2 = ", wdt_R2, ")", sep="")
>>> spas_leg <- paste("SPAS (N = ", spas_n,", Bias = ",spas_mbias,", MAE =
>>> ",spas_mae, ", R2 = ", spas_R2, ")", sep="")
>>>
>>> # create plot
>>> plot(x,y, col="red1", pch=1); lines(x,z, type="p", col="green4",pch=3)
>>> leg.txt <- c(spas_leg, wdt_leg)
>>> legend("topleft", legend = leg.txt, col=c("red1","green4"), pch=c(1,3),
>>> cex=0.85)
>> sublist <-
>> structure(list(wdt_n = 50, wdt_mbias = 0.58, wdt_mae = 2.1, wdt_R2 = 0.85,
>>      spas_n = 50, spas_mbias = 0.58, spas_mae = 2.1, spas_R2 = 0.85), .Names = c("wdt_n",
>> "wdt_mbias", "wdt_mae", "wdt_R2", "spas_n", "spas_mbias", "spas_mae",
>> "spas_R2"))
>>
>> legends <-c(
>>    substitute(
>>      atop(WDT * group("(", list(N == wdt_n, Bias == wdt_mbias, MAE == wdt_mae ), ")" ),
>>        R^2 == wdt_R2 ) ,  env=sublist),
>>    substitute(
>>      atop(SPAS * group("(", list(N == spas_n, Bias == spas_mbias, MAE == spas_mae ), ")"),
>>        R^2 == spas_R2 ), env=sublist)  )
>>
>> # I tried with: as.expression( lapply( exprlist, function(e) bquote(e) ) ) but failed repeatedly.
>> # In order to get `substitute` to cook the bacon, you need to use real expressions, not text.
>>
>> plot(x,y, col="red1", pch=1); lines(x,z, type="p", col="green4",pch=3)
>> legend("topleft",
>>     legend = as.expression(legends),
>>     col=c("red1","green4"), pch=c(1,3),
>>     cex=0.85)
>>
>>
>> --
>> David Winsemius
>> Alameda, CA, USA
>>
>> ______________________________________________
>> 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.

-- 
---------------------------------
Douglas M. Hultstrand, MS
Senior Hydrometeorologist
Metstat, Inc. Windsor, Colorado
voice: 720.771.5840
email: dmhultst at metstat.com
web: http://www.metstat.com




More information about the R-help mailing list