variable in annotation, ggplot2

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

variable in annotation, ggplot2

tring
Hi friends - I have a simple problem of inserting values in label of a
ggplot2. I have a vector V with two values and want to show them in the
plot.

Here is what I tried -  at most get the first entry "28".

R version 3.6.1 (2019-07-05)

Windows 10

 

BW
Troels

 

library(ggplot2)

x <- 1:5

y <- x^2

V <- c(28,14)

df <- data.frame(x=x,y=y)

ggplot(df,aes(x=x,y=y))+geom_line()+

    annotate("text",x=3,y=20,label=bquote(V ==.(as.vector(V))))

 

 

 

ggplot(df,aes(x=x,y=y))+geom_line()+

    annotate("text",x=3,y=20,label=expression(paste("V is ",V)))

 

 

ggplot(df,aes(x=x,y=y))+geom_line()+

    annotate("text",x=3,y=20,label=bquote(V ==.(V)))


This email has been scanned by BullGuard antivirus protection.
For more info visit www.bullguard.com
<http://www.bullguard.com/tracking.aspx?affiliate=bullguard&buyaffiliate=smt
p&url=/>

        [[alternative HTML version deleted]]

______________________________________________
[hidden email] 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.
Reply | Threaded
Open this post in threaded view
|

Re: variable in annotation, ggplot2

Rui Barradas
Hello,

If you form the label with paste before the plot, it can display both
values. Something like


lab <- paste("V = ", paste(V, collapse = ","))

ggplot(df,aes(x=x,y=y)) + geom_line() +
   annotate("text", x = 3, y = 20, label = lab)


Hope this helps,

Rui Barradas

Às 14:55 de 16/12/19, Troels Ring escreveu:

> Hi friends - I have a simple problem of inserting values in label of a
> ggplot2. I have a vector V with two values and want to show them in the
> plot.
>
> Here is what I tried -  at most get the first entry "28".
>
> R version 3.6.1 (2019-07-05)
>
> Windows 10
>
>  
>
> BW
> Troels
>
>  
>
> library(ggplot2)
>
> x <- 1:5
>
> y <- x^2
>
> V <- c(28,14)
>
> df <- data.frame(x=x,y=y)
>
> ggplot(df,aes(x=x,y=y))+geom_line()+
>
>      annotate("text",x=3,y=20,label=bquote(V ==.(as.vector(V))))
>
>  
>
>  
>
>  
>
> ggplot(df,aes(x=x,y=y))+geom_line()+
>
>      annotate("text",x=3,y=20,label=expression(paste("V is ",V)))
>
>  
>
>  
>
> ggplot(df,aes(x=x,y=y))+geom_line()+
>
>      annotate("text",x=3,y=20,label=bquote(V ==.(V)))
>
>
> This email has been scanned by BullGuard antivirus protection.
> For more info visit www.bullguard.com
> <http://www.bullguard.com/tracking.aspx?affiliate=bullguard&buyaffiliate=smt
> p&url=/>
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> [hidden email] 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.
>

______________________________________________
[hidden email] 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.
Reply | Threaded
Open this post in threaded view
|

Re: variable in annotation, ggplot2

Rui Barradas
Another way:


expr <- substitute(V == x, list(x = as.list(V)))
ggplot(df, aes(x, y)) + geom_line() +
   annotate("text", x = 3, y = 20,
            label = deparse(expr), parse = TRUE)

Or this one (nothing to do with your use case, it's an example of plotmath):

v <- paste("atop(", paste0("'V ='*alpha[", V, "]", collapse = ","), ")")
ggplot(df, aes(x, y)) + geom_line() +
   annotate("text", x = 3, y = 20,
            label = v, parse = TRUE)



More idiomatic? At least it allows for the use of plotmath.


Hope this helps,

Rui Barradas

Às 17:27 de 16/12/19, Rui Barradas escreveu:

> Hello,
>
> If you form the label with paste before the plot, it can display both
> values. Something like
>
>
> lab <- paste("V = ", paste(V, collapse = ","))
>
> ggplot(df,aes(x=x,y=y)) + geom_line() +
>    annotate("text", x = 3, y = 20, label = lab)
>
>
> Hope this helps,
>
> Rui Barradas
>
> Às 14:55 de 16/12/19, Troels Ring escreveu:
>> Hi friends - I have a simple problem of inserting values in label of a
>> ggplot2. I have a vector V with two values and want to show them in the
>> plot.
>>
>> Here is what I tried -  at most get the first entry "28".
>>
>> R version 3.6.1 (2019-07-05)
>>
>> Windows 10
>>
>>
>> BW
>> Troels
>>
>>
>> library(ggplot2)
>>
>> x <- 1:5
>>
>> y <- x^2
>>
>> V <- c(28,14)
>>
>> df <- data.frame(x=x,y=y)
>>
>> ggplot(df,aes(x=x,y=y))+geom_line()+
>>
>>      annotate("text",x=3,y=20,label=bquote(V ==.(as.vector(V))))
>>
>>
>>
>>
>> ggplot(df,aes(x=x,y=y))+geom_line()+
>>
>>      annotate("text",x=3,y=20,label=expression(paste("V is ",V)))
>>
>>
>>
>> ggplot(df,aes(x=x,y=y))+geom_line()+
>>
>>      annotate("text",x=3,y=20,label=bquote(V ==.(V)))
>>
>>
>> This email has been scanned by BullGuard antivirus protection.
>> For more info visit www.bullguard.com
>> <http://www.bullguard.com/tracking.aspx?affiliate=bullguard&buyaffiliate=smt 
>>
>> p&url=/>
>>
>>     [[alternative HTML version deleted]]
>>
>> ______________________________________________
>> [hidden email] 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.
>>
>
> ______________________________________________
> [hidden email] 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.

______________________________________________
[hidden email] 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.
Reply | Threaded
Open this post in threaded view
|

Re: variable in annotation, ggplot2

tring
In reply to this post by Rui Barradas
Thanks a lot for the interesting possibilities - R is wonderful!
BW
Troels

-----Oprindelig meddelelse-----
Fra: Rui Barradas <[hidden email]>
Sendt: 16. december 2019 19:31
Til: Troels Ring <[hidden email]>; r-help mailing list <[hidden email]>
Emne: Re: [R] variable in annotation, ggplot2

Another way:


expr <- substitute(V == x, list(x = as.list(V))) ggplot(df, aes(x, y)) + geom_line() +
   annotate("text", x = 3, y = 20,
            label = deparse(expr), parse = TRUE)

Or this one (nothing to do with your use case, it's an example of plotmath):

v <- paste("atop(", paste0("'V ='*alpha[", V, "]", collapse = ","), ")") ggplot(df, aes(x, y)) + geom_line() +
   annotate("text", x = 3, y = 20,
            label = v, parse = TRUE)



More idiomatic? At least it allows for the use of plotmath.


Hope this helps,

Rui Barradas

Às 17:27 de 16/12/19, Rui Barradas escreveu:

> Hello,
>
> If you form the label with paste before the plot, it can display both
> values. Something like
>
>
> lab <- paste("V = ", paste(V, collapse = ","))
>
> ggplot(df,aes(x=x,y=y)) + geom_line() +
>    annotate("text", x = 3, y = 20, label = lab)
>
>
> Hope this helps,
>
> Rui Barradas
>
> Às 14:55 de 16/12/19, Troels Ring escreveu:
>> Hi friends - I have a simple problem of inserting values in label of
>> a ggplot2. I have a vector V with two values and want to show them in
>> the plot.
>>
>> Here is what I tried -  at most get the first entry "28".
>>
>> R version 3.6.1 (2019-07-05)
>>
>> Windows 10
>>
>>
>> BW
>> Troels
>>
>>
>> library(ggplot2)
>>
>> x <- 1:5
>>
>> y <- x^2
>>
>> V <- c(28,14)
>>
>> df <- data.frame(x=x,y=y)
>>
>> ggplot(df,aes(x=x,y=y))+geom_line()+
>>
>>      annotate("text",x=3,y=20,label=bquote(V ==.(as.vector(V))))
>>
>>
>>
>>
>> ggplot(df,aes(x=x,y=y))+geom_line()+
>>
>>      annotate("text",x=3,y=20,label=expression(paste("V is ",V)))
>>
>>
>>
>> ggplot(df,aes(x=x,y=y))+geom_line()+
>>
>>      annotate("text",x=3,y=20,label=bquote(V ==.(V)))
>>
>>
>> This email has been scanned by BullGuard antivirus protection.
>> For more info visit www.bullguard.com
>> <http://www.bullguard.com/tracking.aspx?affiliate=bullguard&buyaffili
>> ate=smt
>>
>> p&url=/>
>>
>>     [[alternative HTML version deleted]]
>>
>> ______________________________________________
>> [hidden email] 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.
>>
>
> ______________________________________________
> [hidden email] 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.


This email has been scanned by BullGuard antivirus protection.
For more info visit www.bullguard.com

______________________________________________
[hidden email] 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.