1 Exploración de datos en R
1.1 Exploración básica
| Comando | Descripción |
|---|---|
sort() |
ordena los datos |
summary() |
resúmenes estadísticos |
fivenum() |
mímino, Q1, media, Q3, máximo |
min() |
mínimo |
max() |
máximo |
mean() |
media |
median() |
mediana |
range() |
(mínimo, máximo) |
sd() |
desviación típica |
var() |
varianza |
cor() |
correlación |
str() |
structure de la base de datos |
Para resumir
plot( df$x, df$y,
type = "n",
xlab = "X label",
ylab = "Y label",
xlim = c(0,15),
ylim = c(0,20)
)Ejemplos en - Cluster
| Opción | Descripción |
|---|---|
cex= |
La escala del elemento respecto al gráfico (1.0 por defecto) |
col= |
color; es un vector - el primer elemento define las líneas si las hay |
pch= |
El símbolo utilizado en los puntos |
type= |
Cómo se representan los datos |
type= |
Descripción |
|---|---|
p |
puntos |
l |
líneas |
b |
both |
c |
líneas (vacío en lugar de los puntos) |
o |
overplot - líneas sobre los puntos |
h |
histogram |
s |
steps |
S |
otro tipo de steps |
n |
no plotting |
En el programa base también tenemos
hist()boxplot()
1.1.1 Puntos
pch= sirve para definir el punto utilizado en el gráfico, y cex= su escala respecto al resto del gráfico. col= s

1.1.2 Exportar imágenes
svg("filename.svg") # Abre el documento
#png("filename.png")
plot(data$var1, data$var2) # Vuelca el plot
dev.off() # Cierra y guarda el documento1.2 ggplot2
Todos los plots de ggplot2 tienen tres elementos fundamentales: data, aes (la parte “estética”) y al menos una función geom que representa las observaciones.
El siguiente código
ggplot(mpg, aes(x = displ, y = hwy)) +
geom_point()donde mpg es un data set, displ y hwy son las variables representadas. geom_point() especifica que hay que generar puntos:
> print(mpg)
# A tibble: 234 x 11
manufacturer model displ year cyl trans drv cty hwy fl class
<chr> <chr> <dbl> <int> <int> <chr> <chr> <int> <int> <chr> <chr>
1 audi a4 1.8 1999 4 auto(l5) f 18 29 p compa…
2 audi a4 1.8 1999 4 manual(… f 21 29 p compa…
3 audi a4 2 2008 4 manual(… f 20 31 p compa…
4 audi a4 2 2008 4 auto(av) f 21 30 p compa…
5 audi a4 2.8 1999 6 auto(l5) f 16 26 p compa…
6 audi a4 2.8 1999 6 manual(… f 18 26 p compa…
7 audi a4 3.1 2008 6 auto(av) f 18 27 p compa…
8 audi a4 quat… 1.8 1999 4 manual(… 4 18 26 p compa…
9 audi a4 quat… 1.8 1999 4 auto(l5) 4 16 25 p compa…
10 audi a4 quat… 2 2008 4 manual(… 4 20 28 p compa…
# … with 224 more rows
1.2.1 Atributos estéticos
aes se puede llamar dentro de la variable principal o en cada uno de los elementos. Se puede cambiar el color, la forma y el tamaño en función de otros atributos:
colour
ggplot(mpg, aes(displ, hwy, color = class)) +
geom_point()
shape
ggplot(mpg, aes(displ, hwy, shape = drv)) +
geom_point()
size
ggplot(mpg, aes(displ, hwy, size = cyl)) +
geom_point()
Todo junto:

IMPORTANTE: En los ejemplos anteriores, el color se escala; es decir, se le atribuye a cada elemento un color distinto. aes se puede colocar dentro de cualquier elemento, incluyendo geom.
La diferencia entre
ggplot(mpg, aes(displ, hwy)) +
geom_point(aes(colour = "blue"))
y
ggplot(mpg, aes(displ, hwy)) +
geom_point(colour = "blue")
es que en el ejemplo de arriba se asigna un elemento estético de color con el término azul - ggplot elige el color y le pone la etiqueta azul.
En el ejemplo de abajo, se asigna un color fijo al geom.
1.2.2 Facetado
Para representar el mismo tipo de gráfico en cada una de las posibilidades de una variable, se puede utilizar la función de facetar. El ejemplo más sencillo es facet_wrap(), que admite como argumento una variable precedida de ~:
ggplot(mpg, aes(displ, hwy)) +
geom_point() +
facet_wrap(~class)
1.2.3 geom - ejemplos
1.2.3.1 Línea suavizada con geom_smooth()
Crea una línea de tendencia con un intervalo de confianza (que puede desactivarse utilizando el argumento geom_smooth(se = FAlSE)).
Se pueden usar distintos métodos (method = "loess"). El método loess es por defecto y utilizan el argumento geom_smooth(span = 1), en el cuál 0 es muy abrupto y 1 es lo más suave posible.
ggplot(mpg, aes(displ, hwy)) +
geom_point() +
geom_smooth()
Hay otros métodos - "gam", que requiere library(mgcv), "lm" (una línea en lugar de una curva)
ggplot(mpg, aes(displ, hwy)) +
geom_point() +
geom_smooth(method = "lm")
y "rlm" (igual que "lm" pero más robusto en caso de outliers; requiere library(MASS)).
1.2.3.2 Boxplots y similares
Un scatterplot para variables categóricas devuelve lo siguiente
ggplot(mpg, aes(drv, hwy)) +
geom_point()
geom_jitter() evita el overplotting añadiendo ruido aleatorio:

geom_bloxplot() traza un boxplot típico:

geom_violin() calcula la densidad teniendo en cuenta el grosor. Además de size, colour y shape, los plots de violines permiten modificar el color del reborde (colour) y el relleno (fill).

1.2.3.3 Histogramas y polígonos de frecuencia
Por defecto, geom_histogram y geom_freqpoly generan bins de 30; el argumento binwidth = sirve para ajustar el número de bins.
ggplot(mpg, aes(hwy)) +
geom_histogram()
ggplot(mpg, aes(hwy)) +
geom_freqpoly()
Además de determinar el tamaño de los bins, se puede modificar el color (histograma) o el relleno (polígono de frecuencias) en función de otra variable:
ggplot(mpg, aes(displ, colour = drv)) +
geom_freqpoly(binwidth = 0.5)
ggplot(mpg, aes(displ, fill = drv)) +
geom_histogram(binwidth = 0.5) +
facet_wrap(~drv, ncol = 1)
1.2.3.4 Bar charts
Se usa geom_bar().
1.2.4 Modificar los ejes
Los elementos ylab() y xlab() sirven para modificar el nombre de los ejes; xlab(NULL) hace que no se imprima nada:
ggplot(mpg, aes(cty, hwy)) +
geom_point(alpha = 1 / 3) +
xlab("city driving (mpg)") +
ylab(NULL)
1.2.4.1 Límites
xlim() y ylim() modifican los límites de los ejes; sirven también para variables categóricas:
ggplot(mpg, aes(drv, hwy)) +
geom_jitter(width = 0.25)
ggplot(mpg, aes(drv, hwy)) +
geom_jitter(width = 0.25) +
xlim("f", "r") +
ylim(20, 30)
1.2.5 Output
Toda la función ggplot se puede guardar en un elemento a través de <-, y después imprimir como print() (si esto ocurre dentro de un loop, por ejemplo) o guardar con ggsave() (en la que se especifica la altura y el formato).
1.2.6 Geoms
Todos los geoms bidimensionales requieren x e y dentro de aes para funcionar; ademas utilizan colour y size; los rellenos también utilizan fill.
1.2.7 Grupos
Hay distintas formas de agrupar la información; para estos ejemplos se utiliza nlme::Oxboys, una base de datos que mide la altura de individuos en distintas ocasiones.
> head(Oxboys)
Grouped Data: height ~ age | Subject
Subject age height Occasion
1 1 -1.0000 140.5 1
2 1 -0.7479 143.4 2
3 1 -0.4630 144.8 3
4 1 -0.1643 147.1 4
5 1 -0.0027 147.7 5
6 1 0.2466 150.2 6
En este dataframe, Oxboys$Subject identifica a cada individuo. Si no se tiene en cuenta la agrupación
ggplot(Oxboys, aes(age, height)) +
geom_point() +
geom_line()se representa la información sin tener en cuenta al sujeto:

Hay que especificar que los datos están agrupados por sujeto para que funcione:
ggplot(Oxboys, aes(age, height, group = Subject)) +
geom_point() +
geom_line()
Cuando hay una combinación de variables que definen el grupo se puede utilizar la función interaction() para agrouparlas - aes(group = interaction(school_id, student_id)).
1.2.7.1 Grupos por capas
En el ejemplo anterior, hemos definido la agrupación en el primer aes, que se propaga a todos los demás. Si quisiesemos hacer una correlación usando geom_smooth(), el geom tendría esto en cuenta:
ggplot(Oxboys, aes(age, height, group = Subject)) +
geom_line() +
geom_smooth(method = "lm", se = FALSE)
La solución es aplicar la agrupación al geom_xx(aes()) deseado y que no se propage a los demás:
ggplot(Oxboys, aes(age, height)) +
geom_line(aes(group = Subject)) +
geom_smooth(method = "lm", size = 2, se = FALSE, colour = "red")
En otras ocasiones hay que deshacer la agrupación por defecto. Al intentar hacer una línea que conecte a cada individuos
ggplot(Oxboys, aes(Occasion, height)) +
geom_boxplot() +
geom_line(colour = "#3366FF", alpha = 0.5)
considera que la línea hay que dibujara por Oxboys$Occasion. Para romper la asociación, hay que especificarlo en el aes() correspondiente:
ggplot(Oxboys, aes(Occasion, height)) +
geom_boxplot() +
geom_line(aes(group = Subject), colour = "#3366FF", alpha = 0.5)
1.2.8 Glosario
1.2.8.1 geom_jitter()
Los argumentos width = y height = determinan el grado de aleatoridad en estos dos ejes; por defecto son 0,4.
1.2.8.2 geom_bar
Siempre utiliza el argumento stat = "identity" para evitar funcionar contando elementos de x; esto hace que utilice y como argumento.