Sei sulla pagina 1di 32

Grupo de Pesquisa em Matemtica Aplicada Projeto R

Universidade Federal Rural do Semi-rido

Grficos no R
Mrio Jorge Rafael Ferreira

Grficos 2D
O R uma poderosa ferramenta no que diz respeito a confeco de grficos e afins. Na estatstica, em especial, ele possibilita a criao de histogramas, ogivas, curvas de distribuio, regresso, dentre outros. Dentro da estatstica as ferramentas grficas nos ajudam a fazer um estudo inicial dos nossos dados, facilitando o entendimento de um problema, pois podemos usualmente identificar as variveis envolvidas no nosso estudo.

Projeto R

Universidade Federal Rural do Semirido

No R temos diversas funes geradoras de grficos, sendo elas classificadas como: Funes Grficas de Alto Nvel: Criam novos grficos na janela definindo eixos, ttulo, etc. Por exemplo: plot, hist, image, contour, persp, etc. Funes Grficas de Baixo Nvel: Permitem adicionar novas informaes a grficos j criados, como novos dados, linhas, etc. Por exemplo: points, lines, abline, polygon, legend, etc. Funes Grficas Iterativas: Permitem retirar ou adicionar informaes aos grficos j existentes, usando por exemplo o mouse. Por exemplo: locator e identify
Universidade Federal Rural do Semirido

Projeto R

plot( )
O comando plot( ) uma funo genrica para plotagem de objetos no R. Ele inicia um novo grfico recebendo os valores de x e y. plot(x,y)

Projeto R

Universidade Federal Rural do Semirido

Para modificar o modo de como o grfico apresentado, podemos alterar alguns parmetros no comando que chama o grfico, por exemplo: Para alterar o padro dos pontos, adicionamos a linha do comando type = 1. 2. 3. 4. 5. 6. 7. 8. 9. "p" para pontos( points), "l para linha (lines), "b" para ambos (both), "c" para tracejado, "o para plotar todos sobrepostos (overplotted), "h para linhas verticais(semelhante a um historiograma), "s para a curva ser apresentada em degrais (steps), "S para a curva ser apresentada em degrais (steps), "n" para que nenhuma curva seja plotada (no plotting).
Universidade Federal Rural do Semirido 5

Projeto R

Alterando Padres dos Pontos


Podemos optar por diferentes padres de pontos, usando o argumento pch=. Por exemplo: plot(x,y,pch=) para utilizar algum smbolo. plot(x,y,pch=0) para utilizar algum smbolo ja existente, indo do 0 ao 14. plot(x,y,pch=*) para utilizar * como padro dos pontos, devemos utilizar as aspas, assim como qualquer outro caracter que convenha ser utilizado.

Projeto R

Universidade Federal Rural do Semirido

Alterando as linhas
A largura das linhas pode ser alterada com o argumento lwd=(dica: tente decorar as letras pela palavra line width, que signica largura de linha), enquanto os estilos das linhas podem ser modicados com o argumento lty=(dica: tente decorar as letras pela palavra line type, que signica tipo de linha), veja o exemplo abaixo: plot(x,y) lines(x,y,lwd=2) lines(rev(x),y,lty=2)

Projeto R

Universidade Federal Rural do Semirido

Definindo o Intervalo dos Eixos


Criamos um grfico determinando inicialmente o intervalo em cada eixo atravs do argumento type= n , criando assim, um grfico em branco, somente com margens e eixos ajustados. Podemos adicionar linhas e pontos com os comandos j vistos por ns. Por exemplo: plot(c(0,20),c(-800,800),type='n') lines(x,y) lines(x,y)

Projeto R

Universidade Federal Rural do Semirido

Adicionando Texto
Para adicionarmos textos utilizamos duas funes: title( ) e text( ). Como e sugerido pelo nome do comando, title( ) e utilizado para a criao de ttulos para os grficos e text( ) utilizado para adicionar um texto em qualquer lugar do grfico.

Projeto R

Universidade Federal Rural do Semirido

Grficos Mltiplos
Podemos plotar at 6 grficos numa mesma janela com a funo par( ), nela definimos como os grficos devem se distribuir na janela, sendo definido como uma matriz(nessa analogia a matriz mxima que pode ser fornecida uma 3x2). Por exemplo: par(mfrow=c(2,2)), para ficar duas colunas e duas linhas, comportando, assim, de uma a quatro janelas. A funo par( ) tem diversas outras funcionalidades no que diz respeito a confeco de grficos, as quais veremos mais adiante. A ttulo de informao, podemos tambm fazer grficos mltiplos com a funo layout( ).

Projeto R

Universidade Federal Rural do Semirido

10

contour( )
Cria um grfico de contorno, ou adiciona linhas de contorno a um grfico j existente; Utiliza os parmetros x,y e z, sendo que z deve ser fornecido em forma de matriz com os valores de x e y.

Projeto R

Universidade Federal Rural do Semirido

11

Mapa Topogrfico do Vulco Maunga Whau


rx <- range(x <- 10*1:nrow(volcano)) ry <- range(y <- 10*1:ncol(volcano)) ry <- ry + c(-1,1) * (diff(rx) - diff(ry))/2 tcol <- terrain.colors(12) par(opar); opar <- par(pty = "s", bg = "lightcyan") plot(x = 0, y = 0,type = "n", xlim = rx, ylim = ry, xlab = "", ylab = "") u <- par("usr") rect(u[1], u[3], u[2], u[4], col = tcol[8], border = "red") contour(x, y, volcano, col = tcol[2], lty = "solid", add = TRUE, vfont = c("sans serif", "plain")) title("A Topographic Map of Maunga Whau", font = 4) abline(h = 200*0:4, v = 200*0:4, col = "lightgray", lty = 2, lwd = 0.1)
Projeto R Universidade Federal Rural do Semirido 12

Projeto R

Universidade Federal Rural do Semirido

13

image( )
Cria uma grade de retngulos coloridos em uma escala de cinza, correspondendo ao valor em z. Pode ser usado para mostrar imagens tridimensionais ou espaciais. As funes heat.colors, terrain.colors e topo.colors criam um espectro de cores (vermelho ao branco) e um esquema arranjado para dispor de forma ordenada os dados, dando cores ao invs de nmeros.

Projeto R

Universidade Federal Rural do Semirido

14

# Volcano data visualized as matrix. Need to transpose and flip # matrix horizontally. image(t(volcano)[ncol(volcano):1,])

Projeto R

Universidade Federal Rural do Semirido

15

# UMA MELHOR FORMA DE APRESENTAR VULCANO x <- 10*(1:nrow(volcano)) y <- 10*(1:ncol(volcano)) image(x, y, volcano, col = terrain.colors(100), axes = FALSE) contour(x, y, volcano, levels = seq(90, 200, by = 5), add = TRUE, col = "peru") axis(1, at = seq(100, 800, by = 100)) axis(2, at = seq(100, 600, by = 100)) box() title(main = "Maunga Whau Volcano", font.main = 4)

Projeto R

Universidade Federal Rural do Semirido

16

Projeto R

Universidade Federal Rural do Semirido

17

Grficos 3D
O R apresenta diversas ferramentas para gerar superfcies e curvas no espao, porm a maioria delas devem ser chamadas atravs dos packages.

Projeto R

Universidade Federal Rural do Semirido

18

persp( )
Plota superfcies sobre o plano xy, em perspectiva; Interpreta os valores de z como uma matriz que fornece, assim como uma tabela de f(x[ i ],y[ i ]), sendo o eixo x corresponde a linha e o eixo y a coluna.

Exemplo:

x <- seq(-10, 10, length = 50) y <- x rotsinc <- function(x,y) { sinc <- function(x) { y <- sin(x)/x ; y[is.na(y)] <- 1; y } 10 * sinc( sqrt(x^2+y^2) ) } sinc.exp <- expression(z == Sinc(sqrt(x^2 + y^2))) z <- outer(x, y, rotsinc) par(bg = "white",mfrow=c(1,2),mar=rep(1.5,4)) persp(x, y, z, theta = 30, phi = 30, expand = 0.5, col = "lightblue") title(sub=".")## work around persp+plotmath bug title(main = sinc.exp) persp(x, y, z, theta = 30, phi = 30, expand = 0.5, col = "lightblue", ltheta = 120, shade = 0.75, ticktype = "detailed", xlab = "X", ylab = "Y", zlab = "Z") title(sub=".")## work around persp+plotmath bug title(main = sinc.exp)

Projeto R

Universidade Federal Rural do Semirido

20

Projeto R

Universidade Federal Rural do Semirido

21

Volcano Grfico de um vulco


Exemplo: z <- 2 * volcano # Exaggerate the relief x <- 10 * (1:nrow(z)) # 10 meter spacing (S to N) y <- 10 * (1:ncol(z)) # 10 meter spacing (E to W) par(mar=rep(.5,4)) persp(x, y, z, theta = 120, phi = 15, scale = FALSE, axes = FALSE)

Projeto R

Universidade Federal Rural do Semirido

23

Aprimorando o Exemplo
The Maunga Whau Volcano. Vamos agora aprimorar nossa superfcie, tornandoa mais agradvel visualmente. Vamos utilizar verde na superfcie(green3), o fundo de azul claro (lightblue) e os lados em cinza(gray).
z <- 2 * volcano # Exaggerate the relief x <- 10 * (1:nrow(z)) # 10 meter spacing (S to N) y <- 10 * (1:ncol(z)) # 10 meter spacing (E to W) z0 <- min(z) - 20 z <- rbind(z0, cbind(z0, z, z0), z0) x <- c(min(x) - 1e-10, x, max(x) + 1e-10) y <- c(min(y) - 1e-10, y, max(y) + 1e-10) fill <- matrix("green3", nr = nrow(z)-1, nc = ncol(z)-1) fill[ , i2 <- c(1,ncol(fill))] <- "gray" fill[i1 <- c(1,nrow(fill)) , ] <- "gray" par(bg = "lightblue",mar=c(.5,.5,2.5,.5)) persp(x, y, z, theta = 120, phi = 15, col = fill, scale = FALSE, axes = FALSE) title(main = "Maunga Whau\nOne of 50 Volcanoes in the Auckland Region.",font.main = 4)
Projeto R Universidade Federal Rural do Semirido 24

Projeto R

Universidade Federal Rural do Semirido

25

Para visualizao em perspectiva:


z <- 2 * volcano # Exaggerate the relief x <- 10 * (1:nrow(z)) # 10 meter spacing (S to N) y <- 10 * (1:ncol(z)) # 10 meter spacing (E to W) z0 <- min(z) - 20 z <- rbind(z0, cbind(z0, z, z0), z0) x <- c(min(x) - 1e-10, x, max(x) + 1e-10) y <- c(min(y) - 1e-10, y, max(y) + 1e-10) fill <- matrix("green3", nr = nrow(z)-1, nc = ncol(z)-1) fill[ , i2 <- c(1,ncol(fill))] <- "gray" fill[i1 <- c(1,nrow(fill)) , ] <- "gray" par(bg = "slategray",mar=rep(.5,4)) persp(x, y, z, theta = 135, phi = 30, col = fill, scale = FALSE, ltheta = -120, lphi = 15, shade = 0.65, axes = FALSE)

Projeto R

Universidade Federal Rural do Semirido

26

Projeto R

Universidade Federal Rural do Semirido

27

z <- 2 * volcano # Exaggerate the relief x <- 10 * (1:nrow(z)) # 10 meter spacing (S to N) y <- 10 * (1:ncol(z)) # 10 meter spacing (E to W) z0 <- min(z) - 20 z <- rbind(z0, cbind(z0, z, z0), z0) x <- c(min(x) - 1e-10, x, max(x) + 1e-10) y <- c(min(y) - 1e-10, y, max(y) + 1e-10) fill <- matrix("green3", nr = nrow(z)-1, nc = ncol(z)-1) fill[ , i2 <- c(1,ncol(fill))] <- "gray" fill[i1 <- c(1,nrow(fill)) , ] <- "gray" fcol <- fill zi <- volcano[ -1,-1] + volcano[ -1,-61] + + volcano[-87,-1] + volcano[-87,-61] ## / 4 fcol[-i1,-i2] <- terrain.colors(20)[cut(zi, quantile(zi, seq(0,1, len = 21)), include.lowest = TRUE)] par(mar=rep(.5,4)) persp(x, y, 2*z, theta = 110, phi = 40, col = fcol, scale = FALSE, ltheta = -120, shade = 0.4, border = NA, box = FALSE)

Projeto R

Universidade Federal Rural do Semirido

28

Projeto R

Universidade Federal Rural do Semirido

29

Lattice e ncdf
Com os packages lattice e ncdf, podemos fazer coisas incrveis como o slido abaixo:

Para produzir isso, devemos utilizar o algoritmo do prximo slide


Projeto R Universidade Federal Rural do Semirido 30

library(grid) library(lattice) plotMesh.grid<-function(l, z, rot.mat=diag(rep(1,1)), dist = 0.1) ## rot.mat: 4x4 transformation matrix ## dist: controls perspective, 0 = none { x <- ltransform3dto3d(l[,z], rot.mat, dist = dist) id <- seq(length = ncol(x) / 3) ord <- order(x[3, id * 3] + x[3, id * 3 - 1] + x[3, id * 3 - 2]) grid.newpage() xscale <- range(x[1,]) yscale <- range(x[2,]) md <- max(diff(xscale), diff(yscale)) pushViewport(viewport(w = 0.9 * diff(xscale) / md, h = 0.9 * diff(yscale) / md, xscale = xscale, yscale = yscale)) id <as.vector(outer(1:3, (id[ord]-1) * 3, "+")) grid.polygon(x = x[1,id], y = x[2,id], default.units = "native", gp = gpar(fill = "gray"), id = rep(id[ord], each = 3)) } rot.mat <- ltransform3dMatrix(list(y = -30, x = 40)) library(ncdf) teapot<-open.ncdf("teapot.nc") z<-get.var.ncdf(teapot,"tris") l<-get.var.ncdf(teapot,"locations") plotMesh.grid(l, z, rot.mat, dist = 0)
Projeto R Universidade Federal Rural do Semirido 31

Fontes:

http://wiki.r-project.org/rwiki/doku.php?id=tips:graphics-3d:graphics-3d Help do R Apostila GenMelhor - Emanuel Fernando Maia de Souza, Luiz Alexandre Peternelli, Mrcio Pupin de Mello

Projeto R

Universidade Federal Rural do Semirido

32

Potrebbero piacerti anche