[R] using a variable and a superscript in a legend

Patrick Giraudoux p@tr|ck@g|r@udoux @end|ng |rom un|v-|comte@|r
Sun Oct 20 20:01:40 CEST 2019


Now, we have two solutions working. This is great since I did not find 
any example of the kind searching r-help archives and google...
Thanks !

Le 20/10/2019 à 19:31, Peter Dalgaard a écrit :
> It's tricky, but I think what you want is
>
> legend(list(x=0,y=100),
>     legend=as.expression(list(
>       "Sans renard",
>       bquote(.(densren) * " ind."/"km"^2)
>     )),
>     lty=c(1,2),col=c("black","red"),bty="n")
>
> Generally, if you want a vector of unevaluated expressions, you need an object of mode "expression", but you cannot create it directly with expression() because then the bquote() is left unevaluated:
>
>> expression("Sans renard",bquote(.(densren) * " ind."/"km"^2))
> expression("Sans renard", bquote(.(densren) * " ind."/"km"^2))
>
> Putting the bquote on the outside _looks_ like it might work:
>
>> bquote(expression("Sans renard",.(densren) * " ind."/"km"^2))
> expression("Sans renard", 1.25 * " ind."/"km"^2)
>
> but that is not an "expression" object, but a call to expression() (!). Try it and see.
>
> Evaluating the call does actually work (notice that the printed value is exactly the same, but the object is not):
>
>> eval(bquote(expression("Sans renard",.(densren) * " ind."/"km"^2)))
> expression("Sans renard", 1.25 * " ind."/"km"^2)
>
> but I think I prefer the as.expression(list(....)) construction.
>
> An alternative tack is this:
>
>> e <- expression(0,0)
>> e[[1]] <- "sans renard"
>> e[[2]] <- bquote(.(densren) * " ind."/"km"^2)
>> plot(1:100,1:100,type="n")
>> legend(list(x=0,y=100),legend=e, lty=c(1,2),col=c("black","red"),bty="n")
>
>
>> On 20 Oct 2019, at 18:02 , Patrick Giraudoux <patrick.giraudoux using univ-fcomte.fr> wrote:
>>
>> Thanks Bert and Peter,
>>
>> Yes Bert, I was aware of the legend() function syntax, and just quoting the legend argument within the function.
>>
>> However, Bert and Peter, I do not understand why it works with your absolutely reproducible examples and not in the slightly (not so slightly apparently) different context where I used it...
>>
>> densren=1.25
>> plot(1:100,1:100,type="n")
>> legend(list(x=0,y=100),legend=c("Sans renard",bquote(.(densren) (ind./km)^2)),lty=c(1,2),col=c("black","red"),bty="n")
>>
>> densren=1.25
>> plot(1:100,1:100,type="n")
>> legend(list(x=0,y=100),legend=c("Sans renard",bquote(.(densren) * " ind."/"km"^2)),lty=c(1,2),col=c("black","red"),bty="n"
>>
>> Probably because the result of bquote() is concatenated in a character vector, but how to deal with this ?
>>
>> Best,
>>
>> Patrick
>>
>>
>>
>> Le 20/10/2019 à 16:42, Bert Gunter a écrit :
>>> Assuming you are using base graphics, your syntax for adding the legend appears to be wrong.
>>> legend() is a separate function, not a parameter of plot.default afaics.
>>>
>>> The following works for me:
>>>
>>>> densren <- 1.25
>>>> plot(1:10)
>>>> legend (x="center", legend =bquote(.(densren) (ind./km)^2))
>>> See ?legend
>>>
>>> Bert Gunter
>>>
>>> "The trouble with having an open mind is that people keep coming along and sticking things into it."
>>> -- Opus (aka Berkeley Breathed in his "Bloom County" comic strip )
>>>
>>>
>>> On Sun, Oct 20, 2019 at 5:30 AM Patrick Giraudoux <patrick.giraudoux using univ-fcomte.fr> wrote:
>>> Dear listers,
>>>
>>> I am trying to pass an expression inlcuding a variable and a
>>> superpscript to a legend. What I want to obtain is e.g. with densren = 1.25
>>>
>>> 1.25 ind./km^2
>>>
>>> I have tried many variants of the following:
>>>
>>> legend=bquote(.(densren) (ind./km)^2)
>>>
>>> but if not errors, do obtain
>>>
>>> 1.25 (ind./km^2)
>>>
>>> hence not what I want (no parenthesis, 2 in superscript...)
>>>
>>> Any idea about a correct syntax to get what I need ?
>>>
>>> Best,
>>>
>>> Patrick
>>>
>>>
>>>          [[alternative HTML version deleted]]
>>>
>>> ______________________________________________
>>> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
>>> 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