5.2 Gráficos
5.2.1 Diagrama de barras y gráfico de sectores
table(catlab)
## catlab
## Administrativo Seguridad Directivo
## 363 27 84
par(mfrow = c(1, 3))
barplot(table(catlab),main="frecuencia absoluta")
barplot(100*prop.table(table(catlab)),main="frecuencia relativa (%)")
pie(table(catlab))
<- table(educ)
nj <- prop.table(nj)
fj <- cumsum(nj)
Nj <- cumsum(fj)
Fj layout(matrix(c(1,2,5,3,4,5), 2, 3, byrow=TRUE), respect=TRUE)
barplot(nj,main="frecuencia absolutas",xlab='años de estudio')
barplot(fj,main="frecuencia relativas",xlab='años de estudio')
barplot(Nj,main="frecuencia absolutas acumuladas",xlab='años de estudio')
barplot(Fj,main="frecuencia relativas acumuladas",xlab='años de estudio')
pie(nj,col=rainbow(6),main='años de estudio')
par(mfrow = c(1, 1))
Con datos continuos, podemos hacer uso de la función cut (más adelante veremos como se representa el histograma)
table(cut(expprev, breaks=5))
##
## (-0.476,95.2] (95.2,190] (190,286] (286,381] (381,476]
## 312 81 46 22 13
barplot(table(cut(expprev,breaks=5)),xlab="Experiencia previa",
main="Categorización en 5 clases")
Debemos ser muy cuidadosos a la hora de valorar gráficas como la siguiente
<- table(cut(expprev, breaks=c(0,40,80,150,250,400)))
tt barplot(tt,xlab="Experiencia previa", main="Categorización en 5 clases")
5.2.2 Gráfico de puntos
dotchart(salario, xlab='salarios')
stripchart(salario~sexo, method='jitter')
5.2.3 Árbol de tallo y hojas
Esta representación puede ser útil cuando se dispone de pocos datos.
stem(salario)
##
## The decimal point is 4 digit(s) to the right of the |
##
## 1 | 666666777777777778888999
## 2 | 00000000000000111111111111111111122222222222222222222222233333333333+148
## 3 | 00000000000000000001111111111111111111111111122222222222223333333333+36
## 4 | 0000000001112222334445555666778899
## 5 | 0111123344555556677778999
## 6 | 0001122355566777888999
## 7 | 00134455889
## 8 | 01346
## 9 | 1127
## 10 | 044
## 11 | 1
## 12 |
## 13 | 5
stem(tiempemp)
##
## The decimal point is at the |
##
## 62 | 000
## 64 | 00000000000000000000000
## 66 | 000000000000000000000000000000000
## 68 | 0000000000000000000000000000000
## 70 | 0000000000000000
## 72 | 00000000000000000000000000
## 74 | 000000000000000
## 76 | 00000000000000000000000
## 78 | 000000000000000000000000000000000000
## 80 | 00000000000000000000000000000000000000
## 82 | 0000000000000000000000000000000000
## 84 | 000000000000000000000000
## 86 | 000000000000000000000000
## 88 | 00000000000000000000
## 90 | 00000000000000000000000000000
## 92 | 00000000000000000000000000000000000000
## 94 | 00000000000000000000
## 96 | 000000000000000000000000000
## 98 | 00000000000000
5.2.4 Histograma
Este gráfico es uno de los más habituales para representar datos continuos
hist(salario, main='número de clases por defecto')
hist(salario, breaks=3, main='3 intervalos de clase')
hist(salario, breaks=100, main='100 intervalos de clase')
<- seq(15000,40000,5000)
cl1 <- seq(50000,80000,10000)
cl2 <- seq(100000,140000,20000)
cl3 hist(salario, breaks=c(cl1,cl2,cl3),main='intervalos de clase de distinta amplitud')
5.2.5 Gráfico de densidad
Es una versión suavizada del histograma.
plot(density(salario))
hist(salario, freq=F, main='')
lines(density(salario), lwd=3, col='red')
El paquete car nos da acceso a la instrucción densityPlot:
library(car) # help(car)
densityPlot(salario~sexo)
5.2.6 Diagrama de cajas
Se trata de un gráfico muy polivalente
boxplot(salario, horizontal=T, axes=F)
axis(1)
par(mfrow=c(1,2))
boxplot(salario~catlab)
boxplot(salario~sexo)
par(mfrow=c(1,1))
boxplot(salario~sexo*catlab)
boxplot(salini, salario)
hist(salario,probability=T,ylab="",col='grey',axes=F,main=""); axis(1)
lines(density(salario),col='red',lwd=2)
par(new=T)
boxplot(salario,horizontal=T,axes=F,lwd=2)
5.2.7 Gráfica de dispersión
Permite ver la relación entre dos variables:
plot(educ,salario)
plot(tiempemp,salario)
plot(salini,salario)
En el caso de una serie temporal
AirPassengers
## Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
## 1949 112 118 132 129 121 135 148 148 136 119 104 118
## 1950 115 126 141 135 125 149 170 170 158 133 114 140
## 1951 145 150 178 163 172 178 199 199 184 162 146 166
## 1952 171 180 193 181 183 218 230 242 209 191 172 194
## 1953 196 196 236 235 229 243 264 272 237 211 180 201
## 1954 204 188 235 227 234 264 302 293 259 229 203 229
## 1955 242 233 267 269 270 315 364 347 312 274 237 278
## 1956 284 277 317 313 318 374 413 405 355 306 271 306
## 1957 315 301 356 348 355 422 465 467 404 347 305 336
## 1958 340 318 362 348 363 435 491 505 404 359 310 337
## 1959 360 342 406 396 420 472 548 559 463 407 362 405
## 1960 417 391 419 461 472 535 622 606 508 461 390 432
plot(AirPassengers)
Y un último ejemplo utilizando los datos iris de Fisher:
plot(iris[,3],iris[,4],main="Longitud y anchura de pétalos de lirios",
xlab="Longitud de pétalo",ylab="Anchura de pétalo")
<-c("red","green","blue")[iris$Species]
iris.colorplot(iris[,3],iris[,4],col=iris.color,main="Longitud y anchura
de pétalo según especies",xlab="Longitud de pétalo",
ylab="Anchura de pétalo")
legend("topleft",c("Setosa","Versicolor","Virginica"),pch=1,
col=c("red","green","blue"),box.lty=0)
pairs(iris[,1:4],col=iris.color)