[R] legend in plot

PIKAL Petr petr@p|k@| @end|ng |rom prechez@@cz
Thu May 5 15:25:05 CEST 2022


Hi.

AFAIK in regular plot it is not possible and you need to use 

x <- seq(-3, 3, by = 0.01)
plot(x, x, type = "l")
lines(x, x^2, lty = 2, col = 2)
legend("bottomright", legend = c("x", expression(x^2)), lty = c(1, 2), col =
c(1, 2), bty = "n")

But you could use ggplot2 package with slightly modified data

# just prepare data
dat <- data.frame(x=x, y=x, z=x^2)
library(tidyr)
datm <- pivot_longer(dat, 2:3)
datm <- as.data.frame(datm)
names(datm)[2] <- "type"
datm$type <-factor(datm$type, labels=c("x", "x^2"))

#make plot
library(ggplot2)
p <- ggplot(datm, aes(x, value, colour=type) )
p+geom_line()

Cheers
Petr

> -----Original Message-----
> From: R-help <r-help-bounces using r-project.org> On Behalf Of Naresh
> Gurbuxani
> Sent: Thursday, May 5, 2022 2:41 PM
> To: r-help using r-project.org
> Subject: [R] legend in plot
> 
> Is it possible to define legend in the plot command?  That will ensure
that
> legend is correctly associated with the points or lines in the plot.
> 
> # I can do this
> x <- seq(-3, 3, by = 0.01)
> plot(x, x, type = "l")
> lines(x, x^2, lty = 2, col = 2)
> # In legend command, I need to remember that x^2 is lty = 2 and col = 2
> legend("bottomright", legend = c("x", expression(x^2)), lty = c(1, 2), col
= c(1,
> 2), bty = "n")
> 
> # I want to do something like this
> plot(x, x, type = "l", label = "x")
> lines(x, x^2, lty = 2, col = 2, label = expression(x^2))
> # legend command already knows the legend for each line
> legend("bottomright", bty = "n")
> 
> Thanks,
> Naresh
> ______________________________________________
> 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