Created
November 6, 2015 15:53
-
-
Save ibartomeus/ec049ab8ba6fadd9ff1d to your computer and use it in GitHub Desktop.
Código charlas SevillaR ggplot (Raúl Ortiz)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- | |
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