Menu

A Função plot() no R: Tipos, Cores, pch e Legendas

Como funciona a função plot() do R - tipos de gráfico, títulos e rótulos de eixos, cores, símbolos de pontos (pch), camadas com lines() e abline(), e legendas.

Esta página tem editores executáveis - edite, execute e veja a saída na hora.

plot() É a Função de Gráficos Multiuso do R

Para plotar no R, chame plot(x, y) com dois vetores numéricos do mesmo comprimento. O R desenha um ponto para cada par - o primeiro vetor ao longo do eixo horizontal, o segundo ao longo do eixo vertical - e rotula os eixos com os nomes das variáveis automaticamente:

x <- 1:12
y <- c(2, 5, 4, 8, 9, 12, 11, 15, 14, 18, 17, 21)

plot(x, y)

O resultado é uma dispersão de doze círculos vazados subindo constantemente conforme x cresce. Esse é todo o preço de entrada: nenhum pacote para instalar, nenhuma configuração. plot() vem com o R base e é a função por trás da maioria dos gráficos rápidos e exploratórios.

Como o executor de código desta página mostra apenas saída de texto, as chamadas de plotagem neste artigo são trechos estáticos - cole-os no RStudio ou em qualquer sessão local de R para ver as imagens. O que você pode rodar aqui é a preparação dos dados. É um bom hábito de qualquer forma: olhe os números antes de colocá-los em um gráfico.

Se você passar apenas um vetor, plot(y) usa as posições de índice 1, 2, 3, ... como eixo horizontal - prático para uma olhada rápida em uma sequência de medições.

Escolhendo o Tipo de Gráfico

O argumento type decide como os pares são desenhados:

plot(x, y, type = "p")   # points (the default)
plot(x, y, type = "l")   # a connected line
plot(x, y, type = "b")   # both: points joined by line segments
plot(x, y, type = "h")   # vertical bars from zero, like a spike chart
plot(x, y, type = "s")   # a step function

type = "l" transforma a dispersão em um gráfico de linha, que é o que você quer para qualquer coisa medida ao longo do tempo. type = "b" mantém as observações individuais visíveis enquanto ainda mostra a tendência. type = "h" desenha um segmento vertical fino do zero até cada valor, e type = "s" desenha uma escada que mantém cada valor até o próximo - útil para quantidades que mudam em saltos, como um preço ou uma contagem de estoque.

Títulos, Rótulos e Cores

Um gráfico sem rótulos é um bilhete particular para você mesmo. Três argumentos resolvem isso: main para o título, xlab e ylab para os rótulos dos eixos. col define a cor:

plot(x, y,
     type = "b",
     main = "Monthly signups",
     xlab = "Month",
     ylab = "Signups (thousands)",
     col  = "steelblue")

col aceita três tipos de valores:

  • Cores nomeadas - "red", "steelblue", "tomato", "darkgreen". O R conhece 657 delas; rode colors() para listar todos os nomes.
  • Códigos hexadecimais - col = "#2C7FB8", exatamente como em CSS.
  • Um vetor de cores - uma por ponto, que é como você colore pontos por grupo: col = c("tomato", "steelblue")[group] onde group é um fator.

Símbolos de Ponto com pch, Tamanhos com cex e lwd

O círculo vazado padrão é bom para exploração, mas confuso em qualquer coisa que você mostre a outras pessoas. pch (plotting character) escolhe o símbolo, numerado de 0 a 25:

plot(x, y, pch = 19)                     # solid circle - the usual choice
plot(x, y, pch = 17)                     # solid triangle
plot(x, y, pch = 21, col = "black",
     bg = "gold")                        # fillable circle: border + fill

Dois números valem a pena memorizar. pch = 19 é o círculo sólido que a maioria dos gráficos finalizados usa. pch = 21 até 25 são os símbolos preenchíveis: col colore a borda e bg colore o interior, então você obtém pontos de dois tons.

Tamanho e estilo de linha têm seus próprios controles:

  • cex escala o tamanho do ponto: cex = 1.5 deixa os pontos 50% maiores.
  • lwd define a espessura da linha para type = "l" ou "b": lwd = 2 é uma linha sólida e legível.
  • lty define o padrão da linha: lty = 1 sólida, 2 tracejada, 3 pontilhada.

Camadas: points(), lines() e abline()

plot() começa um gráfico do zero. Para desenhar por cima de um existente, use suas companheiras - elas adicionam ao gráfico atual em vez de substituí-lo:

plot(x, y, type = "l", lwd = 2, col = "steelblue",
     main = "Actual vs. target")

points(x, y, pch = 19, col = "steelblue")   # add the observations
lines(x, x * 1.5, lty = 2, col = "gray40")  # add a second series, dashed
abline(h = 10, col = "tomato")              # horizontal reference line at y = 10

abline() é a ferramenta de linhas de referência e tem três modos:

  • abline(h = 10) - uma linha horizontal em um dado valor do eixo vertical.
  • abline(v = 6) - uma linha vertical em um dado valor do eixo horizontal.
  • abline(a = 0, b = 1.5) - uma linha por intercepto a e inclinação b.

Seu melhor truque: passe um modelo ajustado e ela desenha a linha de regressão para você - abline(lm(y ~ x)). Essa única linha transforma uma dispersão em um argumento; o guia de gráfico de dispersão constrói a partir disso.

Uma regra a respeitar: os limites dos eixos são fixados pela primeira chamada de plot(). Se uma série em camada se estender além deles, ela é cortada - defina xlim = e ylim = no plot() original com folga suficiente para tudo que você planeja adicionar.

Adicionando uma Legenda

Quando um gráfico tem mais de uma série, ele precisa de uma legenda. legend() recebe uma palavra-chave de posição como primeiro argumento - "topright", "topleft", "bottomright", "bottomleft", "top", "bottom" ou "center" (são strings literais do R, então ficam em inglês no seu código) - depois os rótulos e os estilos correspondentes:

legend("topright",
       legend = c("Actual", "Target"),
       col    = c("steelblue", "gray40"),
       lty    = c(1, 2),
       pch    = c(19, NA),
       lwd    = 2)

Os vetores col, lty e pch devem se alinhar com legend entrada por entrada - o primeiro rótulo recebe a primeira cor, e assim por diante. Use NA para um estilo que não se aplica a uma série (aqui, a linha de meta não tem pontos). A palavra-chave fixa a caixa em um canto da região do gráfico; escolha o canto que seus dados deixarem vazio.

Múltiplos Painéis e Salvando em Arquivo

Para mostrar vários gráficos em uma figura, defina a grade de plotagem antes de desenhar: par(mfrow = c(1, 2)) divide o dispositivo em uma linha e duas colunas, e as duas próximas chamadas de plot() preenchem os painéis em ordem. Restaure com par(mfrow = c(1, 1)) quando terminar, ou os gráficos seguintes continuam minúsculos.

Salvar em arquivo funciona redirecionando o desenho para um dispositivo de arquivo em vez da tela:

png("signups.png", width = 800, height = 600)

plot(x, y, type = "b", pch = 19, col = "steelblue",
     main = "Monthly signups", xlab = "Month", ylab = "Signups")

dev.off()

Tudo entre png() e dev.off() vai parar no arquivo; nada aparece na tela. Esquecer o dev.off() é o bug clássico - o arquivo fica travado e vazio até você fechar o dispositivo. pdf(), jpeg() e svg() funcionam da mesma maneira.

O Que Você Leva

  • plot(x, y) desenha imediatamente; type = alterna entre pontos ("p"), linhas ("l") e ambos ("b").
  • main, xlab, ylab rotulam o gráfico; col aceita nomes de cores (657 delas em colors()) ou códigos hexadecimais.
  • pch = 19 é o círculo sólido; pch = 2125 separam borda (col) de preenchimento (bg); cex, lwd, lty controlam tamanho e estilo de linha.
  • points(), lines() e abline() adicionam camadas ao gráfico existente - abline(lm(y ~ x)) adiciona uma linha de regressão em uma chamada.
  • legend("topright", ...) rotula as séries; png(...) + dev.off() salva em arquivo.

A seguir: o histograma - o gráfico de uma variável que você vai usar primeiro ao conhecer um novo conjunto de dados.

Perguntas frequentes

Como fazer um gráfico no R?

Chame plot(x, y) com dois vetores numéricos do mesmo comprimento. O R abre uma janela gráfica e desenha um ponto para cada par. Adicione type = "l" para um gráfico de linha, main, xlab e ylab para títulos, e col para cor.

O que significa pch no R?

pch (plotting character) escolhe o símbolo do ponto, numerado de 0 a 25. pch = 19 é o círculo sólido que a maioria das pessoas quer. Os símbolos 21 a 25 têm preenchimento separado: col define a borda e bg define o interior.

Como adicionar uma legenda a um gráfico no R?

Chame legend() depois do gráfico, com uma palavra-chave de posição como "topright" no primeiro argumento, um vetor legend = com os rótulos e os valores correspondentes de col, pch ou lty que você usou no gráfico.

Como salvar um gráfico do R em um arquivo?

Abra um dispositivo de arquivo antes de plotar e feche-o depois: png("myplot.png", width = 800, height = 600), depois o código do gráfico, depois dev.off(). Nada aparece na tela - o gráfico vai direto para o arquivo.

Coddy programming languages illustration

Aprenda a programar com o Coddy

COMEÇAR