R y R Studio presenta también una gran cantidad de opciones para la
visualización y grafica de información. Algunas ya están incorporadas
por defecto, como plot
y hist
, aunque no sean
los más usados.
Si tomamos como referencia la EPH del primer trimestre 2023, usando
la carga vista en el taller anterior, utilizamos df
como el
objeto que guarde la misma, tal que:
df <- read.csv(file="datos/usu_individual_T123.txt",
header = TRUE,
sep = ";",
dec= ",")
hist
y plot
Podemos utilizar la función hist
para realizar un
histograma de frecuencias de la cantidad de encuestados por sexo o
edad:
hist(df$CH04)
hist(df$CH06)
La función plot
se centra en realizar diversos tipos de
gráficos con énfasis en realizar vinculación en el comportamiento de dos
variables. Por ejemplo, si queres relacionar edad (CH06
) e
ingresos (P21
), o su logaritmo log(df$P21)
plot(df$CH06, df$P21)
plot(df$CH06, log(df$P21))
La función plot
tiene diversos tipos, los cuales pueden
consultarte en ?plot
, indagando en el argumento
type
.
ggplot2
La libreÃa ggplot2
es la librerÃa más difundida para
realizar gráficos en R, aunque no es la única. A través de la misma se
pueden hacer una gran cantidad de gráficos, de diversos tipos y con la
posibilidad de superponer diversas capas. Aquà abarcaremos algunos tipos
de gráficos, a fin de introducir la lógica de armado de los gráficos,
pero lejos estará de ser una mirada exhautiva. Para poder ver las
diversas alternativas se puede ver su cheatsheet.
La sintaxis de ggplot2()
parte de una sucesión de capas
que se construye de una a la vez pero se presentan en conjunto. La
sintaxis comienza con la definición de la fuente de datos y las
variables a involucrar, ya sea en el eje X, el eje Y, en los colores,
tamaños, etiquetas, etc. A partir de la misma se agregar diversas capas
con el operador +
. Estas capas le agregaran el tipo de
gráfico: geom_point()
de puntos, geom_bar()
un
gráfico de barras, geom_line()
de lÃneas, entre otras
posibilidades. Posteriormente se pueden ir agregando diversas
configuraciones como tÃtulos labs()
, estilos
theme()
, entre otros.
Repliquemos el gráficos de puntos que relaciona la edad
CH06
y el ingreso P21
. En primer lugar, la
función ggplot
fija los elementos generales, como variables
aplicables a todos los gráficos, pero no especifica ningún tipo de
gráfico.
library(ggplot2)
ggplot(data=df, aes(x = CH06, y = P21)) #determina condiciones generales pero no grafica
ggplot(data=df, aes(x = CH06, y = P21))+
geom_point() #suma un tipo de gráfico
#o su función con el logaritmo del ingreso
ggplot(data=df, aes(x = CH06, y = log(P21)))+
geom_point()
A partir de acá se podrÃan incorporar distintas dimensiones como
separar por distintos colores, por ejemplo por sexo CH04
, e
incorporando titulos en los ejes y en el gráfico.
ggplot(data=df, aes(x = CH06,
y = log(P21),
color=as.factor(CH04)))+
geom_point()+
labs(x = "Edad",
y = "Logaritmo del ingreso",
title = "Relacion ingreso y edad")
También se pueden agregar más capas de gráficos sobre este mismo. Por
ejemplo, se podrÃa incorporar la relación entre ambas variables a través
de un gráfico lineal, con la función geom_smooth()
. Si se
incorpora dicha función sin mayores modificaciones, nos devolverá una
representación lineal según una fórmula predeterminada (método GAM),
dividido según las especificaciones que se expresaron anteriormente en
la función ggplot
. En nuestro caso, nos presentará una
curva por cada color.
ggplot(data=df, aes(x = CH06,
y = log(P21),
color=as.factor(CH04)))+
geom_point()+
geom_smooth()+
labs(x = "Edad",
y = "Logaritmo del ingreso",
title = "Relacion ingreso y edad")
Cuando vayamos agregando distintas capas, a las cuales les queremos
dar configuraciones especÃficas a cada capa (por ejemplo, colores o
formas), debemos realizar la configuración aes()
en forma
local para cada función.
Por ejemplo, harmemos dos gráficos distintos. Uno donde los puntos
estén divididos por los colores según el sexo CH04
, pero la
lÃnea de tendencia sea global, y otro al revez, donde los puntos sean
todos iguales pero las lÃneas de tendencia sean divididas por sexo
CH04
cambiando de color. Por último, un tercer ejemplo
donde tengamos los puntos pero con formas
geom_point(aes(shape = REGION))
según la región a la que
pertenecen, y que la lÃnea de la función geom_smooth()
siga
una función lineal a través del argumento
geom_smooth(method = "lm")
.
# Ejemplo 1
ggplot(data=df, aes(x = CH06,
y = log(P21)))+
geom_point(aes(color=as.factor(CH04)))+
geom_smooth()+
labs(x = "Edad",
y = "Logaritmo del ingreso",
title = "Relacion ingreso y edad")
# Ejemplo 2
ggplot(data=df, aes(x = CH06,
y = log(P21)))+
geom_point()+
geom_smooth(aes(color=as.factor(CH04)))+
labs(x = "Edad",
y = "Logaritmo del ingreso",
title = "Relacion ingreso y edad")
# Ejemplo 3
ggplot(data=df, aes(x = CH06,
y = log(P21)))+
geom_point(aes(shape = as.factor(REGION)))+
geom_smooth(aes(color=as.factor(CH04)),
method = "lm")+
labs(x = "Edad",
y = "Logaritmo del ingreso",
title = "Relacion ingreso y edad")
Los ejemplos anteriores especifican gráficos de relación de dos
variables, pero también se pueden realizar gráficos de una única
variable. Por ejemplo, a través de la función geom_bar()
se
presenta un gráfico de barras, previo una función ggplot()
donde solo se defina una única variable.
Por ejemplo, podemos realizar un conteo de la cantidad de encuestados
según la variable sexo CH04
.
ggplot(df, aes(x = CH04))+
geom_bar()+
labs(x = "Sexo",
y = "Cantidad")
A partir de las mismas, podemos establecer diversos argumentos para
diferenciarlo según otras categorÃas, como REGION
cambiando
el color, o el arguento weight
para definir una variable de
ponderación, en el caso de la EPH PONDERA
, aunque no es la
única variable de ponderación.
ggplot(df, aes(x = CH04, weight = PONDERA))+
geom_bar(aes(fill = as.factor(REGION)))+
labs(x = "Sexo",
y = "Cantidad")
Con esta lógica, es posible establecer diversos gráficos para situaciones con una única variable continua, discreta, la combinación de variables continuas y discretas, la incorporación de lÃneas de referencia, configuraciones especÃficas, temáticas, entre otros. Para ver opciones y detalles se recomienda ver el cheatsheet.
Si bien ggplot2
es la librerÃa gráfica más difundida de
R, para la cual se cuenta una gran cantidad de materiales de consulta y
elementos para su utilización. A continuación presentaremos algunas
librerÃa puntuales que aportan distintas alternativas a
ggplot2
.
plotly
La librerÃa plotly
se caracteriza por producir gráficos
interactivos y de calidad para publicación. Se puede introducir en dicha
librerÃa en la página de
plotly
.
Para trabajar con plotly
primero se define los datos
generales del gráfico a través de la función plot_ly()
donde se definen fuentes de datos, variables y otras definiciones
gráficas (opciones de marcadores, tamaños, entre otros). Posteriormente,
se concatena a través de un pipeline %>%
con la función
layout()
, la cual establece opciones de visualización. La
función layout()
también permite vincular la variable
x
definida en la función plot_ly
con diversas
variables y
.
Si retomamos el ejemplo del scatterplot donde vinculamos edad
CH06
con el logaritmo del ingreso P21
, su
planteo general serÃa:
library(plotly)
library(dplyr)
plot_ly(data = df, x = df$CH06, y = log(df$P21), color = as.factor(df$CH04))
También podrÃamos producir gráficos de barras, como el ejemplo referido anteriormente:
plot_ly(data = df, x = as.factor(df$CH04))
#o con su opción con distintas regiones
plot_ly(data = df, x = as.factor(df$CH04), color = as.factor(df$REGION), type="histogram") %>% layout(barmode="stack")