Conteúdo

1. Introdução à função plot()

2. Fazendo um gráfico de função no R

1. Introdução à função plot()

Para desenhar gráficos diversos, a função mais básica do R se chama plot() e é útil saber usá-la em muitas situações. Mostraremos a seguir uma síntese de opções muito utilizadas. Para mais detalhes, veja por exemplo link para mais detalhes. A página do manual acessável por ?plot.default pode ser útil também.

Prob. 1: construa um gráfico mostrando o conjunto de pontos com coordenadas (1,2) (2,4) (3,9) e (4,16) num sistema de coordenadas cartesianas. Vá depois alterando essa caso básico conforme descrito no texto.

plot(c(1,2,3,4),c(1,4,9,16))

Note que os pontos foram definidos em 2 vetores, um deles contendo os valores de \(x\) nos pares \((x,y)\) e o outro com valores de \(y\) no mesmo par.

x<-c(1,2,3,4)
y<-c(1,4,9,16)
plot(x,y,col="red",pch=15,cex=2)

Cada uma dessas opções pode ser definida como um vetor, de mesma dimensão que x e y, definindo o comportamento de cada ponto. No exemplo a seguir, mostramos muitos das opções utilizando essa possibilidade.

x<-c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20)
y<-c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20)
opt<-c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20)
plot(x,y,col=opt,pch=opt,cex=1+1.3*opt/10)

A opção type controla o tipo de apresentação do gráfico de pontos. Se nada for especificado, assume que type="p", ou seja um ponto no gráfico, como nos exemplos acima. A seguir mostramos 2 opções importantes: type="l" (letra éle, para ligar os pontos com segmentos de reta) e type="h" para barras, algo útil para desenhar funções de massa em estatística.

x<-c(1,2,3,4,5,6)
y<-c(1,4,9,16,25,36)
plot(x,y,type="l",col="blue")

plot(x,y,type="h",col="blue")

Podemos também superpor 2 gráficos, usando o comando lines que funciona de forma idêntica a do comando plot mas desenhando sobre um gráfico já existente.

x<-1:6 # mesmo que x<-c(1,2,3,4,5,6)
y<-x^2 # vetor com os elemntos de x ao quadrado
y
## [1]  1  4  9 16 25 36
plot(x,y,type="p",pch=20,col="red",cex=1.5) # plota os pontos como círculos cheios de cor vermelha
lines(x,y,type="l",col="blue")  # liga os pontos com segmentos de reta
lines(x,y,type="h",col="blue") # coloca barras de cor azul em cada ponto

Podemos colocar linhas verticais ou horizontais para evidenciar algo nos gráficos usando, posteriormente ao desenho do gráfico, a o comando abline(h=y) (para linhas horizontais na posição definida por y) ou abline(v=x) (para linhas verticais na posição definida por x). Se for usada a opção lty=2 a linha aparecerá tracejada. No gráfico a seguir vamos colocar 2 linhas horizontais nas posições y=0 (sólida) e y=16 (tracejada, com espessura o dobro da normal) e uma linha vertical na posição x=4 (tracejada, de cor darkgray).

x<-c(1,2,3,4,5,6)
y<-c(1,4,9,16,25,36)
plot(x,y,type="p",pch=20,col="red",cex=1.5) # plota os pontos como círculos cheios de cor vermelha
lines(x,y,type="l",col="blue")  # liga os pontos com segmentos de reta
lines(x,y,type="h",col="blue") # coloca barras de cor azul em cada ponto
abline(h=0)
abline(h=16,lty=2,col="black",lwd=2) # lwd muda a espessura da linha, o default é lwd=1
abline(v=4,lty=2,col="darkgray")

Finalmente, há opções úteis, no comando plot, para alterar o rótulo do eixo x (xlab) e eixo y (ylab), assim como colocar um grid de linhas para facilitar a visualização e também colocar textos explicativos em posições específicas do gráfico (text). Essas opções são exemplificadas a seguir.

x<-c(1,2,3,4,5,6)
y<-c(1,4,9,16,25,36)
plot(x,y,type="p",pch=20,col="red",cex=1.5,
     xlab="eixo x", ylab="eixo y") # plota os pontos como círculos cheios de cor vermelha e muda rótulos de x e y
grid(col="darkgray")
text(x=4,y=18,label="ponto (4,16)") # texto colocado na posição (x=4,y=18)

2. Fazendo um gráfico de função no R

Prob. 2: Faça o gráfico da função \(y=x^2\) para \(x\in [-4,4]\).

Usando as opções definidas na seção anterior, podemos apresentar um gráfico da função, a partir da definição de pontos (x,y) correspondentes à função e depois usar o comando plot com a opção ``type=“l”``` para ligar os pontos, como no código abaixo.

x<-c(-4,-3,-2,-1,0,1,2,3,4)
y<-x^2
y
## [1] 16  9  4  1  0  1  4  9 16
plot(x,y,type="l",col="blue",lwd=2) #usando opções col e lwd (altera espessura da linha)
grid(col="red")

Para melhorar a aparência do gráfico, dando uma visualização que mostre melhor a continuidade, poderíamos definir mais pontos no domínio da função. Para tanto o ideal é utilizar a função seq(a,b,delta) para criar um vetor que inicia em \(a\) e termina em \(b\), com elementos espaçados na largura \(delta\)

x<-seq(-4,4,0.01)
x[1:5] # mostrando os 5 primeiros elementos do vetor
## [1] -4.00 -3.99 -3.98 -3.97 -3.96
y<-x^2
y[1:5] # mostrando os 5 primeiros elementos do vetor
## [1] 16.0000 15.9201 15.8404 15.7609 15.6816
plot(x,y,type="l",col="blue",lwd=2) #usando opções col e lwd (altera espessura da linha)
grid(col="red")

Coloque no mesmo gráfico a função z=exp(x) com a função lines, no mesmo domínio, mas altere a escala no eixo y com ylim=c(0,50) para que a função exp(x) fique com uma visualização boa (as definições de escala vem do primeiro gráfico). E coloque rótulos no gráfico para identificar as 2 funções.

x<-seq(-4,4,0.01)
x[1:5] # mostrando os 5 primeiros elementos do vetor
## [1] -4.00 -3.99 -3.98 -3.97 -3.96
y<-x^2
z<-exp(x)
y[1:5] # mostrando os 5 primeiros elementos do vetor
## [1] 16.0000 15.9201 15.8404 15.7609 15.6816
plot(x,y,type="l",col="blue",lwd=2,
     ylim=c(0,50),xlab="eixo x",
     ylab="elxo y") #ylim=c(0,50) altera eixo y para 0 a 40 e altera rótulos dos eixos
lines(x,z,type="l",col="red",lwd=2)
grid(col="darkgray")
abline(h=0) # linha horizontal no posição y=0
text(x=-3,y=15,expression(x^2))
text(x=3.3,y=45,expression(exp(x)),col="red")

Prob. 3: Faça o gráfico da função da função \(y=f(x)={10\choose x} 0.3^x 0.7^{10-x}\) no domínio \(x\in\{0,1,\dots,10\}\). Coloque barras verticais nas para identificar cada ponto, assim como um ponto na parte superior da barra.

x<-0:10
y<-choose(10,x)*0.3^x*0.7^{10-x}
y
##  [1] 0.0282475249 0.1210608210 0.2334744405 0.2668279320 0.2001209490
##  [6] 0.1029193452 0.0367569090 0.0090016920 0.0014467005 0.0001377810
## [11] 0.0000059049
plot(x,y,type="h",col="blue")
lines(x,y,type="p",pch=20,cex=2,col="red")
abline(h=0)