Adicionar uma linha a um gráfico com a função Lines() em R

Jinku Hu 30 janeiro 2023
  1. Use a função lines() para adicionar uma linha a um gráfico em R
  2. Use pontos para adicionar pontos a um gráfico em R
  3. A ordem de chamada de função plot e lines afeta as escalas do gráfico
Adicionar uma linha a um gráfico com a função Lines() em R

Este artigo irá introduzir como adicionar uma linha a um gráfico com a função lines() em R.

Use a função lines() para adicionar uma linha a um gráfico em R

A função lines() faz parte do pacote R graphics e é usada para adicionar linhas ao gráfico. Em primeiro lugar, a função plot deve ser chamada para construir um gráfico onde há um mapeamento de variáveis ​​especificadas pelos dois primeiros argumentos. Observe que o segundo argumento, que denota as coordenadas do eixo y, é opcional. Uma vez que o gráfico é desenhado, podemos chamar a função lines() e passar os vetores de coordenadas conforme necessário para adicionar linhas ao gráfico. A função plot não é necessária para desenhar um gráfico de linha para que a função lines() funcione.

library(stats)
library(babynames)
library(dplyr)

plot(cars$speed, cars$dist, type = "l", col = "red",
     main = "Title of the Plot",
     xlab = "Speed (mph)",
     ylab = "Stopping Distance (Feet)")

lines(cars$speed, cars$dist/4 , col = "green")

legend("topleft", c("line 1", "line 2"),
       lty = c(1,1),
       col = c("red", "green"))

adicionar linha para traçar

Use pontos para adicionar pontos a um gráfico em R

Semelhante à função lines(), o pacote graphics fornece a função points() para desenhar pontos no gráfico. O exemplo a seguir demonstra o cenário onde duas linhas e mapeamentos de pontos são feitos no mesmo gráfico. Observe, porém, que o gráfico de linha original é desenhado com a função plot.

library(stats)
library(babynames)
library(dplyr)

plot(cars$speed, cars$dist, type = "l", col = "red",
     main = "Title of the Plot",
     xlab = "Speed (mph)",
     ylab = "Stopping Distance (Feet)")
points(cars$speed, cars$dist, col = "blue" )

lines(cars$speed, cars$dist/4 , col = "green")
points(cars$speed, cars$dist/4 , col = "black")

legend("topleft", c("line 1", "line 2"),
       lty = c(1,1),
       col = c("red", "green"))

adicionar pontos ao gráfico de linha

A ordem de chamada de função plot e lines afeta as escalas do gráfico

Às vezes, os dados mapeados com a primeira chamada de função têm escalas que não são suficientes para o mapeamento a seguir. O próximo trecho de código mostra como uma das linhas está quase fora dos limites no gráfico.

library(stats)
library(babynames)
library(dplyr)

dat <- babynames %>%
  filter(name %in% c("Alice")) %>% filter(sex=="F")
dat2 <- babynames %>%
  filter(name %in% c("Mary")) %>% filter(sex=="F")

plot(dat$year, dat$n, type = "l", col = "blue",
     main = "Women born with different names",
     xlab = "Year",
     ylab = "Number of babies born")
lines(dat2$year, dat2$n, col = "red")

funções de plot e linhas

Observe que o problema anterior pode ser resolvido com a reordenação manual das linhas, conforme mostrado no exemplo a seguir. Embora, scripts mais complexos possam precisar construir instruções condicionais e verificação dinâmica para os valores máximos dos dados do eixo y.

library(stats)
library(babynames)
library(dplyr)

dat <- babynames %>%
  filter(name %in% c("Alice")) %>% filter(sex=="F")
dat2 <- babynames %>%
  filter(name %in% c("Mary")) %>% filter(sex=="F")
dat3 <- babynames %>%
  filter(name %in% c("Mae")) %>% filter(sex=="F")

plot(dat2$year, dat2$n, type = "l", col = "blue",
     main = "Women born with different names",
     xlab = "Year",
     ylab = "Number of babies born")
lines(dat$year, dat$n, col = "red")
lines(dat3$year, dat3$n, col = "orange")

legend("topright", c("Mary", "Alice", "Mae"),
       lty = c(1,1,1),
       col = c("blue", "red", "orange"))

reordenar funções de plotagem e linhas

Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Artigo relacionado - R Plot