Forma parte del motor gráfico desarrollado por Paul Murrell en 2001 llamado grid. De entre las funciones de ggplot se encuentran manipulaciones gráficas como: generación de lienzos, trazo de lÃneas, dibujo de puntos, etc.
20 de febrero de 2019
Forma parte del motor gráfico desarrollado por Paul Murrell en 2001 llamado grid. De entre las funciones de ggplot se encuentran manipulaciones gráficas como: generación de lienzos, trazo de lÃneas, dibujo de puntos, etc.
Para el siguiente trabajo se requiere instalar las siguientes librerias:
library(openxlsx) library(ggplot2) library(tidyverse)
y se trabajará con distintas bases de datos, las cuales se seleccionarán de acuerdo a los diversos propósitos y vienen incluidas ya en R.
Comenzaremos con la base de datos iris
## 'data.frame': 150 obs. of 5 variables: ## $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ... ## $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ... ## $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ... ## $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ... ## $ Species : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...
Para ello se necesita construir una sintáxis, la cual obligatoriamente debe tener los siguientes elementos:
Datos: deben ser del tipo data frame o table data frame Se comienza creando un objeto el cual contiene los datos que vamos a utilizar.
p<-ggplot(iris) p
Estéticas (aes): son, por ejemplo, la distancia horizontal o vertical, el color, la forma , el tamaño, etc.
Entre algunas estéticas tenemos:
x e y: distancias horizontal y vertical.
colour: para el color.
size: para el tamaño.
shape: indica la forma de los puntos (cuadrados, triángulos, etc.) o el trazo (continuo, punteado) de las lÃneas.
alpha: para la transparencia, su utilidad se refleja cuando queremos dar peso y/o importancia a ciertos datos.
fill: para el color de relleno de las formas sólidas (barras, etc).
A pesar de que x e y se especifican, no hay puntos o lÃneas en él. Esto se debe a que ggplot no asume a que se refiere, es decir si es un diagrama de dispersión o un gráfico de lÃneas que se va a dibujar. Con la función aes solo se le ha dicho a ggplot qué conjunto de datos usar y qué columnas deben usarse para los ejes X e Y.
p<-p + aes(x = Petal.Length, y = Petal.Width, colour = Species) p
Objetos geométricos: son los verbos del lenguaje de los gráficos e indican qué hacer con los datos y las estéticas elegidas y cómo representarlos en un lienzo.
La función geom_point se utiliza para hacer un gráfico de dispersión simple
p + geom_point()
p + geom_point(size=3)+geom_smooth(method = lm,col="firebrick")
Bajo el comando theme(legend.position="None")
Bajo el comando caption dentro de la función labs, de la siguiente forma:
labs(title="Iris", subtitle="Especies", y="Ancho del pétalo", x="Longuitud del pétalo", caption="Regresión Lineal")
Se lo puede hacer añadiendo a nuestro objeto la función ** scale_colour_brewer(palette = "nombre_de_los_colores"). El nombre de los colores puede verse la base brewer.pal.info** de la librerÃa RColorBrewer
library(RColorBrewer) head(brewer.pal.info, 10)
## maxcolors category colorblind ## BrBG 11 div TRUE ## PiYG 11 div TRUE ## PRGn 11 div TRUE ## PuOr 11 div TRUE ## RdBu 11 div TRUE ## RdGy 11 div FALSE ## RdYlBu 11 div TRUE ## RdYlGn 11 div FALSE ## Spectral 11 div FALSE ## Accent 8 qual FALSE
Existen un sin número de objetos geométricos sin embargo los más usuales son geom_point, geom_line, geom_histogram, geom_bar y geom_boxplot.
Para consultar otros objetos geométricos se puede dirigir a http://docs.ggplot2.org/current/
Los lÃmites de los ejes X e Y se pueden controlar de 2 maneras.
Método 1 : borrando los puntos fuera del rango.
Esto cambiará las lÃneas a un mejor ajuste en comparación con los datos originales. Se lo hace por xlim() y ylim(). Los argumentos de estas dos últimas funciones pueden ser un vector numérico de longitud 2 (con valores mÃnimo y máximo) o solo los valores máximo y mÃnimo.
Método 2 : Acercamiento.
El otro método es cambiar los lÃmites de los ejes X e Y haciendo zoom en la región de interés sin eliminar los puntos. Esto se hace utilizando coord_cartesian().
iris %>% select(Petal.Length,Petal.Width) %>%
summarise(minimo_Petal.Length=min(Petal.Length),
maximo_Petal.Length=max(Petal.Length),
minimo_Petal.Width=min(Petal.Width),
maximo_Petal.Width=max(Petal.Width))
## minimo_Petal.Length maximo_Petal.Length minimo_Petal.Width ## 1 1 6.9 0.1 ## maximo_Petal.Width ## 1 2.5
p + geom_point()+geom_smooth()+xlim(c(1,6.9))+ylim(c(0.1,2.5))
p + geom_point()+geom_smooth()+ coord_cartesian(xlim=c(1,6.9), ylim=c(0.1, 2.5))
La función ggsave guarda en el directorio de trabajo el último gráfico generado con ggplot2, en el formato indicado y con el nombre del fichero que se quiere generar.
ggsave("mi_grafico.png")
Además con la función last_plot se puede obtener la última gráfica creada.
La función facet_grid crea tres gráficos dispuestos horizontalmente que comparan la relación entre la anchura y la longitud del pétalo de las tres especies de iris. Estos gráficos permiten hacer comparaciones.
ggplot(iris, aes(x = Petal.Length, y = Petal.Width)) + geom_point() + geom_smooth() + facet_grid(~ Species)
ggplot(iris, aes(x = Petal.Length, y = Petal.Width)) + geom_point() + geom_smooth() + facet_grid(Species ~.)
Con la función labs se puede añadir nombres a los ejes. Además, se le puede añadir un tÃtulo al gráfico usando la función ggtitle.
p<-p + ggtitle("Longuitud y ancho del pétalo") +
labs(x = "Longuitud del pétalo",
y = "Ancho del pétalo",caption = 'Especies',
colour = "Species")
Podemos personalizar nuestro gráfico añadiendo tÃtulos, subtÃtulos,captions, etc. Utilizando las siguientes funciones:
p<-p+ theme(plot.title=element_text(size=20,
face="bold",
family="American Typewriter",
color="tomato",
hjust=0.5,
lineheight=1.2), # titulo
plot.caption=element_text(size=15), # caption
axis.title.x=element_text(vjust=10,
size=15), # tÃtulo del eje x
axis.title.y=element_text(size=15), # tÃtulo del eje y
axis.text.x=element_text(size=10,
angle = 30,
vjust=.5), # texto para el eje x
axis.text.y=element_text(size=10)) # texto para el eje y
a<-ggplot(economics,aes(date,unemploy)) b<-ggplot(seals,aes(x=long,y=lat))
a+geom_abline(aes(intercept=0,slope=1))
b+geom_hline(aes(yintercept=lat))
b+geom_vline(aes(xintercept=long))
Dibuja una lÃnea recta entre los puntos (x, y)
b+geom_segment(aes(yend=lat+1,xend=long+1))
str(mpg)
## Classes 'tbl_df', 'tbl' and 'data.frame': 234 obs. of 11 variables: ## $ manufacturer: chr "audi" "audi" "audi" "audi" ... ## $ model : chr "a4" "a4" "a4" "a4" ... ## $ displ : num 1.8 1.8 2 2 2.8 2.8 3.1 1.8 1.8 2 ... ## $ year : int 1999 1999 2008 2008 1999 1999 2008 1999 1999 2008 ... ## $ cyl : int 4 4 4 4 6 6 6 4 4 4 ... ## $ trans : chr "auto(l5)" "manual(m5)" "manual(m6)" "auto(av)" ... ## $ drv : chr "f" "f" "f" "f" ... ## $ cty : int 18 21 20 21 16 18 18 18 16 20 ... ## $ hwy : int 29 29 31 30 26 26 27 26 25 28 ... ## $ fl : chr "p" "p" "p" "p" ... ## $ class : chr "compact" "compact" "compact" "compact" ...
c<-ggplot(mpg,aes(hwy)) c1<-ggplot(mpg)
c+geom_density()
c+geom_histogram()
c1+geom_qq(aes(sample=hwy))
d<-ggplot(mpg,aes(fl))
d+geom_bar()
e<-ggplot(mpg,aes(cty,hwy))
Crea diagramas de dispersión
e+geom_point()
Ajusta una regresión de cuantiles a los datos y dibuja los cuantiles ajustados con lÃneas. Es un análogo continuo de geom_boxplot.
e+geom_quantile()
f<-ggplot(mpg,aes(class,hwy))
Similar a geom_bar
f+geom_col()
f+geom_boxplot()