Skip to content

Instantly share code, notes, and snippets.

@ibartomeus
Created November 6, 2015 15:53
Show Gist options
  • Save ibartomeus/ec049ab8ba6fadd9ff1d to your computer and use it in GitHub Desktop.
Save ibartomeus/ec049ab8ba6fadd9ff1d to your computer and use it in GitHub Desktop.
Código charlas SevillaR ggplot (Raúl Ortiz)
---
title: "Sevillarusers - ggplot2 intro"
author: "Ra?l Ortiz"
date: "Tuesday, October 27, 2015"
output: pdf_document
---
# Introducci?n al paquete gr?fico "ggplot2".
## Establezco el directorio de trabajo.
```{r}
setwd("~/Expression/Expression Encoder/Archivos presentaciones/Intro ggplot2")
```
## Instalo y cargo el paquete ggplot2.
```{r,warning=FALSE}
#install.packages("ggplot2")
library(ggplot2)
```
## Cargo los datos del df "diamonds".
```{r}
data("diamonds")
View(diamonds)
help(diamonds)
head(diamonds)
```
## Scatter plot. Para representar dos variables de una misma observaci?n.
```{r}
ggplot(data=diamonds, aes(x=carat, y=price)) + #qu? quiero representar
geom_point() #c?mo lo quiero representar
# Se puede observar que existe cierta relacion entre el incremento del precio y el incremento del tama?o.
# Borrar gr?fico
p = ggplot(data=diamonds, aes(x=carat, y=price)) + #qu? quiero representar
geom_point() #c?mo lo quiero representar
print(p)
p
summary(p)
```
## Introducir una tercera variable en la representaci?n. Aesthetic.
```{r}
ggplot(data=diamonds, aes(x=carat, y=price, color=clarity)) + #El color de los puntos cambia en f(variable)
geom_point()
#No confundir con:
ggplot(data=diamonds, aes(x=carat, y=price)) +
geom_point(color="steelblue", size=4, alpha=1/2) #Ahora color es definido por una constante.
# Muchos aspectos se reprsentan siguiendo los par?metros predefinidos por defecto, como son los colores asignados a cada variable, la aparici?n de la leyenda con un formato y en una posici?n determinada, etc...
# Al introducir una tercera variable en el gr?fico podemos ver c?mo la claridad de los diamantes tambi?n influye en el precio, as? se aprecia que los de claridad VVS1 alcanzan precios mas altos que los de la claridad I1, cuando a?n cuando el peso del diamante es el mismo, p.e.1.
# En el lugar de "clarity" se puede introducir otras variables cualitativas como "color" o "cut".
```
## Podemos introducir a?n un cuarta e incluso una quinta variable. Aesthetic.
```{r}
ggplot(data=diamonds, aes(x=carat, y=price, color=clarity, size=color)) +
geom_point()
ggplot(data=diamonds, aes(x=carat, y=price, color=clarity, size=color, shape=cut)) +
geom_point()
# Demasiado confuso.
```
## A?adimos una capa m?s al gr?fico (geom_), que a su vez sea un resumen estad?stico.
```{r}
ggplot(data=diamonds, aes(x=carat, y=price)) +
geom_point()
# Representamos la curva que mejor se adapta a los datos.
ggplot(data=diamonds, aes(x=carat, y=price)) +
geom_point() +
geom_smooth() #El sombreado representa el error est?ndar.
# Si en vez de la curva, preferimos la recta, pediremos que se calcule mediante una regresi?n linear "lm".
ggplot(data=diamonds, aes(x=carat, y=price)) +
geom_point() +
geom_smooth(method="lm", se=FALSE) #Quito el sombreado
# Como curiosidad, si utilizamos la est?tica color, se crear? una recta para cada variable de color.
ggplot(data=diamonds, aes(x=carat, y=price, color=clarity)) +
geom_point() +
geom_smooth(method="lm", se=FALSE)
# Podemos quitar la capa de puntos para tener una mejor im?gen.
ggplot(data=diamonds, aes(x=carat, y=price, color=clarity)) +
geom_smooth(method="lm", se=FALSE)
# Se puede modificar el tipo de l?nea
ggplot(data=diamonds, aes(x=carat, y=price, color=clarity)) +
geom_smooth(size=3, linetype=2, method="lm", se=FALSE)
```
## Separamos las gr?ficas mediante una variable. Facet.
```{r}
ggplot(data=diamonds, aes(x=carat, y=price, color=clarity)) +
geom_point() + #Podemos quitar esta capa a?adiendo un corchete al inicio de la l?nea
geom_smooth(method="lm", se=FALSE) +
facet_wrap(~ color)
help(facet_wrap)
ggplot(data=diamonds, aes(x=carat, y=price, color=clarity)) +
geom_smooth(method="lm", se=FALSE) +
facet_wrap(~ color, ncol=2)
ggplot(data=diamonds, aes(x=carat, y=price)) +
geom_point() +
facet_wrap(~ color + cut, ncol=5)
ggplot(data=diamonds, aes(x=carat, y=price, color=clarity)) +
geom_point() +
facet_grid(color ~ cut)
```
## Anotaciones.
```{r}
ggplot(data=diamonds, aes(x=carat, y=price, color=clarity)) +
geom_point()
# A?adimos t?tulo y modificamos las etiquetas de los ejes.
ggplot(data=diamonds, aes(x=carat, y=price, color=clarity)) +
geom_point() +
ggtitle("Relaci?n entre peso y precio de cada diamante") +
xlab("Peso (ct)") +
ylab("Precio ($)")
# Cambiamos par?metros generales del gr?fico.
ggplot(data=diamonds, aes(x=carat, y=price, color=clarity)) +
geom_point() +
theme_bw() + # Tema predefinido. Cambia algunos valores por defecto (color de fondo, de las fuentes..).
ggtitle("Relaci?n entre peso y precio de cada diamante") +
labs(x="Peso (ct)", y="Precio ($)")
# Podemos cambiar los par?metros que nos interesen
ggplot(data=diamonds, aes(x=carat, y=price, color=clarity)) +
geom_point() +
theme(text = element_text(size=14), # Tama?o de fuente del grafico por defecto
plot.title=element_text(size=rel(2), vjust=2),
axis.text=element_text(colour="blue"),
axis.title.x = element_text(size=rel(1.5)),
axis.title.y = element_text(size=rel(1.5)),
legend.text=element_text(size=rel(0.7)),
legend.title = element_text(size=rel(1))) +
ggtitle("Relaci?n entre peso y precio de cada diamante") +
labs(x="Peso (ct)", y="Precio ($)")
help(theme)
```
## Histogramas.
```{r}
head(diamonds)
ggplot(data=diamonds, aes(x=carat)) +
geom_histogram()
ggplot(data=diamonds, aes(x=carat)) +
geom_histogram(binwidth=0.2) # Datos agrupados en diamantes que difieren en menos de 0.2 quilates.
# Para visualizar la distribuci?n de los precios, agrupados por el tipo de corte.
ggplot(data=diamonds, aes(x=price)) +
geom_histogram(binwidth=1000) +
facet_wrap(~ cut)
# Mejoramos los gr?ficos permitiendo que se ajuste el rango de las ordenadas en cada uno de ellos.
ggplot(data=diamonds, aes(x=price)) +
geom_histogram(binwidth=1000) +
facet_wrap(~ cut, scales="free_y")
# Podemos representar una segunda variable.
ggplot(data=diamonds, aes(x=carat, fill=color)) +
geom_histogram(binwidth=0.2) #Observamos, por ejemplo, como los diamantes de color D disminuyen su frecuencia conforme ?stos se hacen mas grandes.
```
## Gr?ficos de densidad.
```{r}
head(diamonds)
ggplot(data=diamonds, aes(x=carat)) +
geom_density()
ggplot(data=diamonds, aes(x=carat, color=color)) +
geom_density()
```
## Gr?fico de caja y bigotes.
```{r}
head(diamonds)
ggplot(diamonds, aes(cut, price)) +
geom_boxplot()
# Como hay muchos outlyers, transformamos la escala de ordenadas a una logar?tmica.
ggplot(diamonds, aes(cut, price)) +
geom_boxplot() +
scale_y_log10()
```
## Gr?ficos de viol?n.
```{r}
head(diamonds)
# Este tipo de gr?ficos tiene una ventaja respecto a los Boxplots, y es que se muestra la frecuencia de los datos.
ggplot(diamonds, aes(cut, price)) +
geom_violin() +
scale_y_log10()
```
## Guardar gr?ficos.
```{r}
ViolinPlot = ggplot(diamonds, aes(cut, price)) +
geom_violin() +
scale_y_log10()
jpeg(filename="Plot00.jpeg", # Nombre del archivo y extension
height = 11,
width = 18,
res= 200, # Resolucion
units = "cm") # Unidades.
ViolinPlot # Grafico
dev.off() # Cierre del archivo
```
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment