13 - Introducción a los gráficos

François Rebaudo, IRD francois.rebaudo@ird.fr

Marzo 2019 ; PUCE-Quito-Ecuador http://myrbooksp.netlify.com/

CC BY-NC-ND 3.0

plot

plot

myX <- rnorm(100, mean = 0, sd = 1)
myY <- rnorm(100, mean = 10, sd = 1)
plot(x = myX, y = myY)

plot

plot(x = myX, y = myY, 
  xlab = "XXXXXXXXXX", ylab = "YYYYYYYYYY")

plot

plot(x = myX, y = myY, 
  xlim = c(-10, 10), ylim = c(5, 15))

plot

plot(x = rep(1:5, 5), y = rep(1:5, each = 5),
  pch = 1:25, xlab = "", ylab = "", cex = 2)

plot

plot(x = rep(1:5, 5), y = rep(1:5, each = 5),
  pch = 1:25, xlab = "", ylab = "", cex = 2)
text(x = rep(seq(1:5), 5), y = rep(seq(1:5), each = 5),
  labels = 1:25, pos = 4)

plot

plot(x = myX, y = myY, 
  pch = c("a", "@", "#", "1", "=", "-", "_", "o", "O", "0", 
    letters[1:15]), cex = 2)

plot

plot(x = myX, y = myY, 
  cex = seq(from = 0.5, to = 5, length.out = 100))

plot

plot(x = myX, y = myY, 
  cex = seq(from = 0.5, to = 5, length.out = 100),
  pch = 16,
  col = sample(colors(), 100))

plot

myX <- rnorm(100)
myY <- rnorm(100)
dfGraph <- data.frame(myX, myY)

plot

head(dfGraph, n = 20)
##             myX         myY
## 1  -1.378218917  0.04866924
## 2  -1.662268949 -0.16686561
## 3  -0.403794063 -0.05235688
## 4   0.577935845  0.37375287
## 5  -1.532462571 -0.29685909
## 6  -0.035550278  1.34390589
## 7  -0.273451534  1.08034573
## 8   0.192711230 -0.06803904
## 9  -1.564790969  0.40600420
## 10  1.623969388 -1.26568216
## 11 -0.574531888  0.71904817
## 12 -1.138485585  0.03065298
## 13  1.373924628 -0.64210521
## 14  0.008102908  0.81323626
## 15  1.897272551 -0.75097833
## 16  0.672998373 -0.74298886
## 17 -2.456344196 -0.32729626
## 18 -1.641669627 -0.11439332
## 19 -0.588792533  1.38047139
## 20  0.500128288 -0.01559370

plot

dfGraph <- dfGraph[order(dfGraph$myX),]
dfGraph$myCol <- colorRampPalette(c("blue", "yellow", "red"))(100)

plot

head(dfGraph, n = 20)
##           myX         myY   myCol
## 57 -2.6484200 -0.65117667 #0000FF
## 17 -2.4563442 -0.32729626 #0505F9
## 59 -1.9703816  1.52171692 #0A0AF4
## 42 -1.7940642 -0.55245324 #0F0FEF
## 75 -1.7660886 -0.13393643 #1414EA
## 2  -1.6622689 -0.16686561 #1919E5
## 90 -1.6502417  0.47012539 #1E1EE0
## 18 -1.6416696 -0.11439332 #2424DA
## 89 -1.6362279  0.60742579 #2929D5
## 9  -1.5647910  0.40600420 #2E2ED0
## 5  -1.5324626 -0.29685909 #3333CB
## 40 -1.5096213 -1.67965770 #3838C6
## 71 -1.4961242  0.21134528 #3D3DC1
## 70 -1.4340675  2.08098170 #4242BC
## 1  -1.3782189  0.04866924 #4848B6
## 92 -1.2911527  0.63482615 #4D4DB1
## 12 -1.1384856  0.03065298 #5252AC
## 60 -1.0376215 -0.06334114 #5757A7
## 93 -0.8487423 -0.93520104 #5C5CA2
## 51 -0.8258940 -1.69167031 #61619D

plot

dfGraph <- dfGraph[order(dfGraph$myY),]
dfGraph$myCex <- seq(from = 0.5, to = 5, length.out = 100)

plot

head(dfGraph, n = 20)
##            myX        myY   myCol     myCex
## 72  0.09202184 -3.5504180 #FFE200 0.5000000
## 36  1.19701149 -2.1742027 #FF5700 0.5454545
## 49  0.24300620 -2.0414448 #FFC300 0.5909091
## 21 -0.19235646 -1.7695554 #E7E717 0.6363636
## 51 -0.82589402 -1.6916703 #61619D 0.6818182
## 40 -1.50962134 -1.6796577 #3838C6 0.7272727
## 94  0.03906816 -1.6491644 #FFF200 0.7727273
## 79  1.18158614 -1.5873759 #FF5C00 0.8181818
## 86 -0.75125367 -1.5256968 #71718D 0.8636364
## 48  0.45323714 -1.4409626 #FFAF00 0.9090909
## 47 -0.12378179 -1.4320259 #F2F20C 0.9545455
## 10  1.62396939 -1.2656822 #FF3800 1.0000000
## 45  0.62030109 -1.1943473 #FF9A00 1.0454545
## 32  0.17911183 -1.0720131 #FFDD00 1.0909091
## 97 -0.39140938 -1.0136797 #B9B945 1.1363636
## 61 -0.71082648 -0.9854178 #80807E 1.1818182
## 93 -0.84874233 -0.9352010 #5C5CA2 1.2272727
## 34  1.28510449 -0.8986402 #FF5200 1.2727273
## 15  1.89727255 -0.7509783 #FF2900 1.3181818
## 16  0.67299837 -0.7429889 #FF8500 1.3636364

plot

plot(x = dfGraph$myX, y = dfGraph$myY, 
  cex = dfGraph$myCex, pch = 16, col = dfGraph$myCol, 
  xlab = "", ylab = "")

plot

dfGraph$grupo <- factor(
  sample(letters[1:5], size = 100, replace = TRUE))

plot

head(dfGraph, n = 20)
##            myX        myY   myCol     myCex grupo
## 72  0.09202184 -3.5504180 #FFE200 0.5000000     c
## 36  1.19701149 -2.1742027 #FF5700 0.5454545     a
## 49  0.24300620 -2.0414448 #FFC300 0.5909091     e
## 21 -0.19235646 -1.7695554 #E7E717 0.6363636     a
## 51 -0.82589402 -1.6916703 #61619D 0.6818182     d
## 40 -1.50962134 -1.6796577 #3838C6 0.7272727     c
## 94  0.03906816 -1.6491644 #FFF200 0.7727273     e
## 79  1.18158614 -1.5873759 #FF5C00 0.8181818     a
## 86 -0.75125367 -1.5256968 #71718D 0.8636364     d
## 48  0.45323714 -1.4409626 #FFAF00 0.9090909     e
## 47 -0.12378179 -1.4320259 #F2F20C 0.9545455     b
## 10  1.62396939 -1.2656822 #FF3800 1.0000000     a
## 45  0.62030109 -1.1943473 #FF9A00 1.0454545     c
## 32  0.17911183 -1.0720131 #FFDD00 1.0909091     b
## 97 -0.39140938 -1.0136797 #B9B945 1.1363636     b
## 61 -0.71082648 -0.9854178 #80807E 1.1818182     a
## 93 -0.84874233 -0.9352010 #5C5CA2 1.2272727     c
## 34  1.28510449 -0.8986402 #FF5200 1.2727273     c
## 15  1.89727255 -0.7509783 #FF2900 1.3181818     d
## 16  0.67299837 -0.7429889 #FF8500 1.3636364     e

plot

str(dfGraph)
## 'data.frame':    100 obs. of  5 variables:
##  $ myX  : num  0.092 1.197 0.243 -0.192 -0.826 ...
##  $ myY  : num  -3.55 -2.17 -2.04 -1.77 -1.69 ...
##  $ myCol: chr  "#FFE200" "#FF5700" "#FFC300" "#E7E717" ...
##  $ myCex: num  0.5 0.545 0.591 0.636 0.682 ...
##  $ grupo: Factor w/ 5 levels "a","b","c","d",..: 3 1 5 1 4 3 5 1 4 5 ...

plot

plot(x = dfGraph$myX, y = dfGraph$myY, 
  pch = 16, xlab = "", ylab = "",
  col = as.numeric(dfGraph$grupo))

plot

plot(x = dfGraph$myX, y = dfGraph$myY, pch = 16, xlab = "", 
  ylab = "", cex = 2, col = as.numeric(dfGraph$grupo))
legend("topleft", fill = seq_along(levels(dfGraph$grupo)), 
  legend = levels(dfGraph$grupo))

plot

plot(x = dfGraph$myX, y = dfGraph$myY, 
  pch = as.numeric(dfGraph$grupo), xlab = "", ylab = "", 
  cex = 2, col = as.numeric(dfGraph$grupo))
legend("topleft", pch = seq_along(levels(dfGraph$grupo)), 
  legend = levels(dfGraph$grupo), 
  col = seq_along(levels(dfGraph$grupo)))

plot

myX <- 1:20
myY <- rnorm(20, mean = 10, sd = 1)
plot(x = myX, y = myY, type = 'b')

plot

myX <- 1:20
myY <- rnorm(20, mean = 10, sd = 1)
plot(x = myX, y = myY, type = 'p') 

plot

myX <- 1:20
myY <- rnorm(20, mean = 10, sd = 1)
plot(x = myX, y = myY, type = 'l') 

plot

myX <- 1:20
myY <- rnorm(20, mean = 10, sd = 1)
plot(x = myX, y = myY, type = 'c') 

plot

myX <- 1:20
myY <- rnorm(20, mean = 10, sd = 1)
plot(x = myX, y = myY, type = 'o') 

plot

myX <- 1:20
myY <- rnorm(20, mean = 10, sd = 1)
plot(x = myX, y = myY, type = 'h') 

plot

myX <- 1:20
myY <- rnorm(20, mean = 10, sd = 1)
plot(x = myX, y = myY, type = 's') 

plot

myX <- 1:20
myY <- rnorm(20, mean = 10, sd = 1)
plot(x = myX, y = myY, type = 'n') 

plot

plot(x = myX, y = myY, type = 'n') 
grid(lwd = 3, lty = 1)
points(x = myX, y = myY, type = "l", lwd = 2)

plot

plot(x = myX, y = myY, type = 'l', lwd = 2) 
grid(lwd = 3, lty = 1)

plot

plot(x = myX, y = myY, type = 'l', lwd = 2, 
  panel.first = grid(lwd = 3, lty = 1)) 

plot

op <- par(no.readonly = TRUE)
par(mfrow = c(1, 2))
plot(x = myX, y = myY, type = 'l', lwd = 2) 
grid(lwd = 3, lty = 1)
plot(x = myX, y = myY, type = 'l', lwd = 2, 
  panel.first = grid(lwd = 3, lty = 1))

plot

par(op)

plot

par(mfrow = c(1, 2), mar = c(2, 2, 1, 1))
plot(x = myX, y = myY, type = 'l', lwd = 2) 
grid(lwd = 3, lty = 1)
plot(x = myX, y = myY, type = 'l', lwd = 2, 
  panel.first = grid(lwd = 3, lty = 1))

plot

par(op)

plot

par(mfrow = c(2, 2), mar = c(2, 2, 1, 1))
graph4 <- lapply(1:4, function(i){
  plot(x = rnorm(100), 
    y = rnorm(100), 
    col = i, pch = 16)
})

plot

par(op)

plot

plot(x = myX, y = myY, type = 'l', lwd = 2)
abline(h = mean(myY), lwd = 1, lty = 2)
abline(v = myX[myY == min(myY)], col = 4, lty = 2)
abline(v = myX[myY == max(myY)], col = 2, lty = 2)

hist

hist

myX <- list(
  rnorm(1000),
  rgamma(1000, shape = 1),
  sample(1:100, size = 1000, replace = TRUE),
  rbeta(1000, shape1 = 1, shape2 = 2)
)
myTitle <- c("Normal", "Gamma", "Uniform", "Beta")

hist

par(mfrow = c(2, 2), mar = c(2, 2, 1, 1))
tr <- lapply(1:4, function(i){
  hist(myX[[i]], col = heat.colors(15), 
    main = myTitle[i]
  )
})

hist

par(op)

hist

myX <- rnorm(1000)
par(mfrow = c(1, 2), mar = c(1, 1, 1, 1))
hist(myX, axes = FALSE, col = rainbow(100))
hist(myX, axes = FALSE, nclass = 100, col = rainbow(100))

hist

par(op)

barplot

barplot

# pkgCheck("palettesForR")
myX <- rnorm(3, mean = 10)
barplot(myX, names.arg = c("A", "B", "C"), col = Cool_gpl)

barplot

par(mar = c(1, 1, 1, 1))
myX <- matrix(c(4, 5, 8, 4, 6, 2, 3, 4, 5), nrow = 3)
barplot(myX, axes = FALSE, col = Pastels_gpl[1:3])

barplot

par(mar = c(1, 1, 1, 1))
barplot(myX, axes = FALSE, col = Pastels_gpl[1:3], 
  beside = TRUE, legend.text = c("A", "B", "C"))

plot + barplot

n <- 50
myX <- rnorm(n)
myY <- rnorm(n)
myCol <- c(2, sample(c(4, 2), size = (n - 1), replace = TRUE))
myColors <- colorRampPalette(c("blue", "red"))(100)
head(data.frame(myX, myY, myCol))
##          myX         myY myCol
## 1 -0.7284559  0.03600655     2
## 2  1.4177086 -1.80614899     2
## 3  1.5861542  1.09792868     2
## 4 -1.2423248 -0.47986996     4
## 5  0.2758956  0.23012508     4
## 6 -0.1189247  1.69064426     2

plot + barplot

myYCut <- cut(myY, breaks = -4:4)
myXCut <- cut(myX, breaks = -4:4)
print(myXCut)
##  [1] (-1,0]  (1,2]   (1,2]   (-2,-1] (0,1]   (-1,0]  (-1,0]  (0,1]  
##  [9] (1,2]   (-2,-1] (-2,-1] (-1,0]  (-1,0]  (-2,-1] (0,1]   (-2,-1]
## [17] (-1,0]  (0,1]   (1,2]   (0,1]   (1,2]   (-1,0]  (-2,-1] (0,1]  
## [25] (1,2]   (0,1]   (0,1]   (0,1]   (-1,0]  (-1,0]  (-1,0]  (-1,0] 
## [33] (-2,-1] (0,1]   (-1,0]  (-1,0]  (0,1]   (1,2]   (1,2]   (-1,0] 
## [41] (-2,-1] (0,1]   (0,1]   (1,2]   (0,1]   (2,3]   (-1,0]  (1,2]  
## [49] (0,1]   (-1,0] 
## Levels: (-4,-3] (-3,-2] (-2,-1] (-1,0] (0,1] (1,2] (2,3] (3,4]

plot + barplot

myYCutCol <- table(myCol, myYCut)
myXCutCol <- table(myCol, myXCut)
print(myXCutCol)
##      myXCut
## myCol (-4,-3] (-3,-2] (-2,-1] (-1,0] (0,1] (1,2] (2,3] (3,4]
##     2       0       0       2      8     8     8     1     0
##     4       0       0       6      8     7     2     0     0

plot + barplot

xCol <- round(
  myXCutCol[1,] / (myXCutCol[1,] + myXCutCol[2,]) * 100
)
xCol[is.na(xCol) | xCol == 0] <- 1
yCol <- round(
  myYCutCol[1,] / (myYCutCol[1,] + myYCutCol[2,]) * 100
)
yCol[is.na(yCol) | yCol == 0] <- 1
print(xCol)
## (-4,-3] (-3,-2] (-2,-1]  (-1,0]   (0,1]   (1,2]   (2,3]   (3,4] 
##       1       1      25      50      53      80     100       1

plot + barplot

par(mar = c(2, 3, 1, 1))
layout(matrix(c(1, 1, 0, 
                2, 2, 3, 
                2, 2, 3), ncol = 3, byrow = TRUE))
barplot(table(myXCut), las = 1, col = myColors[xCol])
plot(x = myX, y = myY, col = myCol, pch = 16, 
  xlim = c(-4, 4), ylim = c(-4, 4), cex = 1.5, 
  panel.first = grid())
barplot(table(myYCut), las = 1, horiz = TRUE, 
  col = myColors[yCol])

plot + barplot

plot + barplot

graphBarplotCol <- function(n){
  myX <- rnorm(n)
  myY <- rnorm(n)
  myCol <- c(2, sample(c(4, 2), size = (n - 1), replace = TRUE))
  myColors <- colorRampPalette(c("blue", "red"))(100)
  myYCut <- cut(myY, breaks = -4:4)
  myXCut <- cut(myX, breaks = -4:4)
  myYCutCol <- table(myCol, myYCut)
  myXCutCol <- table(myCol, myXCut)
  xCol <- round(
    myXCutCol[1,] / (myXCutCol[1,] + myXCutCol[2,]) * 100
  )
  xCol[is.na(xCol) | xCol == 0] <- 1
  yCol <- round(
    myYCutCol[1,] / (myYCutCol[1,] + myYCutCol[2,]) * 100
  )
  yCol[is.na(yCol) | yCol == 0] <- 1
  op <- par(no.readonly = TRUE)
  par(mar = c(2, 3, 1, 1))
  layout(matrix(c(1, 1, 0, 
                  2, 2, 3, 
                  2, 2, 3), ncol = 3, byrow = TRUE))
  barplot(table(myXCut), las = 1, col = myColors[xCol])
  plot(x = myX, y = myY, col = myCol, pch = 16, 
    xlim = c(-4, 4), ylim = c(-4, 4), cex = 1.5, 
    panel.first = grid())
  barplot(table(myYCut), las = 1, horiz = TRUE, 
    col = myColors[yCol])
  par(op)
}

plot + barplot

graphBarplotCol(n = 1000)

plot + barplot

boxplot

boxplot

df <- data.frame(
  box1 = rnorm(1000), 
  box2 = rgamma(1000, shape = 1), 
  box3 = sample(-3:3, size = 1000, replace = TRUE),
  box4 = rbeta(1000, shape1 = 1, shape2 = 2)
)

boxplot

boxplot(df, col = c(rgb(0, 94, 255, maxColorValue = 255),  
  rgb(255, 0, 174, maxColorValue = 255),  
  rgb(255, 136, 0, maxColorValue = 255),  
  rgb(119, 255, 0, maxColorValue = 255)))

boxplot

boxplot

df$cat <- sample(
  c("w", "x", "y", "z"), 
  size = 1000, 
  replace = TRUE)

boxplot

boxplot(df$box3 ~ df$cat, col = c(
  rgb(0, 94, 255, maxColorValue = 255),  
  rgb(255, 0, 174, maxColorValue = 255),  
  rgb(255, 136, 0, maxColorValue = 255),  
  rgb(119, 255, 0, maxColorValue = 255)), ylab = "Box3")

boxplot

boxplot

df$cat2 <- sample(
  1:3, 
  size = 1000, 
  replace = TRUE)

boxplot

boxplot(df$box4 ~ df$cat*df$cat2, col = c(
  rgb(0, 94, 255, maxColorValue = 255),  
  rgb(255, 0, 174, maxColorValue = 255),  
  rgb(255, 136, 0, maxColorValue = 255),  
  rgb(119, 255, 0, maxColorValue = 255)), ylab = "Box4")

boxplot

SIGUIENTE