Este es un archivo Notebook de R Markdown, Cando ejecutas el código con Run o Ctrl+Shift+Enter, el resultado aparecerá debajo del código
Comienza instalando el paquete ggplot2 y cargando la librería
Revisa la ayuda de qplot() en http://ggplot2.tidyverse.org/reference/qplot.html
qplot(x, y = NULL, data, facets = NULL, margins = FALSE, geom = "auto", xlim = c(NA, NA), ylim = c(NA, NA), main = NULL, xlab = , ylab = , stat = NULL)
Luego utilizaremos el conjunto de datos mtcars para realizar diversos gráficos de exploración. Ggplot trabaja sobre data.frames, por ello asegurate que los datos sean data.frames.
## [1] "data.frame"
## mpg cyl disp hp drat wt qsec vs am gear carb
## Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
## Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
## Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
## Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
## Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
## Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
Al incluir una columna de un data.frame, por defecto se dibujará un historgrama
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
Incluye el argumento bins para indicar el número de clases del histograma
Aunque está indicado por defecto, puedes igual incluir que el tipo de geometría del gráfico a dibujar sea histograma. El resultado será igual al gráfico anterior.
Añade lineas verticales para mostrar la media y la mediana.
qplot(mpg, data = mtcars, bins=5, geom = "histogram") +
geom_vline(xintercept = mean(mtcars$mpg), color="red")+
geom_vline(xintercept = median(mtcars$mpg), color="blue")Clasifica el histograma de acuerdo con una segunda variable.
Convierte el histrograma en un gráfico de densidad.
## Warning: Ignoring unknown parameters: bins
Cambia el argumento fill por color para hacer los polígonos vacios.
## Warning: Ignoring unknown parameters: bins
Cambia el tipo de línea de las densidades.
## Warning: Ignoring unknown parameters: bins
Utiliza el argumento facets para dividir ambos poligonos de densidades en gráficos diferentes. Observa el argumento facets en los dos ejemplos. En el primero se graficarán como columnas y en el segundo como filas
## Warning: Ignoring unknown parameters: bins
## Warning: Ignoring unknown parameters: bins
qplot(mpg, data = mtcars, geom = "density",
xlab = "galones por millas", ylab = "Densidas",
main = "Densidad de galones por millas") * Diagrama de disersión* Añadiendo dos columnas,
mpg como eje x y wt como eje y se dibujará un diagrama de dispersión o scatterplot.
El argumento color diferencia los puntos de acuerdo con una tercer variable.
El valor por defecto del argumento geom es point, sin embargo dicho valor puede ser remplazado por line para graficar lineas.
El valor smooth de geom grafica el ajuste y el error estándar de LOESS (locally weighted scatterplot smoothing)
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
También es posible realizar el ajuste condicionado por una tercer variable…
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
…y modificar el método de ajuste para realizar una regresión lineal
qplot(mpg, wt, data = mtcars, color = factor(cyl))+ geom_smooth(method = "lm") # metodo linear modeling, regresion lineal## `geom_smooth()` using formula 'y ~ x'
qplot(mpg, wt, data = mtcars, facets = .~factor(cyl), color = factor(cyl))+ geom_smooth(method = "lm") # metodo linear modeling, regresion lineal## `geom_smooth()` using formula 'y ~ x'
Los siguientes ejemplos muestran que la variable cyl es continua por lo que, por defecto, se selecciona una escala de color continua. Si queremos asignar una escala discreta, es necesario transformar cly al tipo de dato factor.
El tamaño y la forma de puntos puede cambiarse acorde a una variable.
Otro ejemplo con facets puede observarse a continuación
qplot(hp, mpg, data=mtcars, shape=factor(am), color=factor(am),
facets=gear~cyl, size=I(3),
xlab="Horsepower", ylab="Miles per Gallon")qplot(factor(am),mpg , data = mtcars,
geom = "dotplot", stackdir = "center", binaxis = "y",
color = factor(am), fill = factor(am))## `stat_bindot()` using `bins = 30`. Pick better value with `binwidth`.
qplot(factor(am),mpg , data = mtcars,
geom = "violin", stackdir = "center", binaxis = "y",
color = factor(am), fill = factor(am))## Warning: Ignoring unknown parameters: stackdir, binaxis
Utilice los datos “diamonds” para dibujar boxplots de “price” y “cut”
## # A tibble: 53,940 x 10
## carat cut color clarity depth table price x y z
## <dbl> <ord> <ord> <ord> <dbl> <dbl> <int> <dbl> <dbl> <dbl>
## 1 0.23 Ideal E SI2 61.5 55 326 3.95 3.98 2.43
## 2 0.21 Premium E SI1 59.8 61 326 3.89 3.84 2.31
## 3 0.23 Good E VS1 56.9 65 327 4.05 4.07 2.31
## 4 0.290 Premium I VS2 62.4 58 334 4.2 4.23 2.63
## 5 0.31 Good J SI2 63.3 58 335 4.34 4.35 2.75
## 6 0.24 Very Good J VVS2 62.8 57 336 3.94 3.96 2.48
## 7 0.24 Very Good I VVS1 62.3 57 336 3.95 3.98 2.47
## 8 0.26 Very Good H SI1 61.9 55 337 4.07 4.11 2.53
## 9 0.22 Fair E VS2 65.1 61 337 3.87 3.78 2.49
## 10 0.23 Very Good H VS1 59.4 61 338 4 4.05 2.39
## # … with 53,930 more rows
Este tutorial se basa en http://seananderson.ca/ggplot2-FISH554/ y https://rpubs.com/agrogan/ggplot2
Los elementos básicos de ggplot son
ggplot(): especificar los datos geom_point(): la geometría o tipo de gráfico puede ser de muchas maneras, en este caso es de tipo punto aes(): “aesthetic”, como las variables serán visualizadas facet_grid(): gráficos compartidos.
Los elementos de ggplot se unen con el símbolo +
Algunos tipos de geometría son geom_point() Points geom_line() Lines geom_ribbon() Ribbons, y range with continuous x values geom_polygon() Polygon, a filled path geom_pointrange() Vertical line with a point in the middle geom_linerange() An interval represented by a vertical line geom_path() Connect observations in original order geom_histogram() Histograms geom_text() Text annotations geom_violin( Violin plot (another name for a beanplot) geom_map() Polygons on a map
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
El siguiente es un código idéntico al anterior
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
Limita el número de clases
Divide en categorias y asigna trasparencia
ggplot(data = mtcars) + geom_histogram(aes(x=qsec,fill=factor(am)),bins=10, position = "stack",alpha = 0.5)#stackggplot(data = mtcars) + geom_histogram(aes(x=qsec,fill=factor(am)),bins=10, position = "identity",alpha = 0.5)Ancho de barras
ggplot(data = mtcars) + geom_histogram(aes(x=qsec,fill=factor(am)),bins=10, position = "stack",alpha = 0.5, binwidth=0.5)ggplot(data = mtcars) + geom_density(aes(x=qsec,fill=factor(am)),bins=10, position = "identity",alpha = 0.5)## Warning: Ignoring unknown parameters: bins
Utilice los datos “diamonds” para dibujar un histograma de “price”
## # A tibble: 53,940 x 10
## carat cut color clarity depth table price x y z
## <dbl> <ord> <ord> <ord> <dbl> <dbl> <int> <dbl> <dbl> <dbl>
## 1 0.23 Ideal E SI2 61.5 55 326 3.95 3.98 2.43
## 2 0.21 Premium E SI1 59.8 61 326 3.89 3.84 2.31
## 3 0.23 Good E VS1 56.9 65 327 4.05 4.07 2.31
## 4 0.290 Premium I VS2 62.4 58 334 4.2 4.23 2.63
## 5 0.31 Good J SI2 63.3 58 335 4.34 4.35 2.75
## 6 0.24 Very Good J VVS2 62.8 57 336 3.94 3.96 2.48
## 7 0.24 Very Good I VVS1 62.3 57 336 3.95 3.98 2.47
## 8 0.26 Very Good H SI1 61.9 55 337 4.07 4.11 2.53
## 9 0.22 Fair E VS2 65.1 61 337 3.87 3.78 2.49
## 10 0.23 Very Good H VS1 59.4 61 338 4 4.05 2.39
## # … with 53,930 more rows
## group value
## 1 Male 25
## 2 Female 25
## 3 Child 50
# Barplot
bp <- ggplot(df, aes(x="", y=value, fill=group))+
geom_bar(width = 1, stat = "identity")
bpggplot(mtcars, aes(mpg, qsec)) + geom_point(aes(size = hp), alpha = 0.4)+
facet_wrap(~factor(am)+factor(cyl))ggplot(mtcars, aes(mpg, qsec)) + geom_point(aes(size = hp), alpha = 0.4)+
facet_wrap(factor(cyl)~factor(am))# compare con facet gridggplot(mtcars, aes(mpg, qsec)) + geom_point(aes(size = hp), alpha = 0.4)+
facet_grid(factor(cyl)~factor(am))Utilice los datos “diamonds” para dibujar un grafico de dispersion de “depth” en funcion de “carat”, asigne color por “price” y utilice facet grid con “cut”
## # A tibble: 53,940 x 10
## carat cut color clarity depth table price x y z
## <dbl> <ord> <ord> <ord> <dbl> <dbl> <int> <dbl> <dbl> <dbl>
## 1 0.23 Ideal E SI2 61.5 55 326 3.95 3.98 2.43
## 2 0.21 Premium E SI1 59.8 61 326 3.89 3.84 2.31
## 3 0.23 Good E VS1 56.9 65 327 4.05 4.07 2.31
## 4 0.290 Premium I VS2 62.4 58 334 4.2 4.23 2.63
## 5 0.31 Good J SI2 63.3 58 335 4.34 4.35 2.75
## 6 0.24 Very Good J VVS2 62.8 57 336 3.94 3.96 2.48
## 7 0.24 Very Good I VVS1 62.3 57 336 3.95 3.98 2.47
## 8 0.26 Very Good H SI1 61.9 55 337 4.07 4.11 2.53
## 9 0.22 Fair E VS2 65.1 61 337 3.87 3.78 2.49
## 10 0.23 Very Good H VS1 59.4 61 338 4 4.05 2.39
## # … with 53,930 more rows
##
## I1 SI2 SI1 VS2 VS1 VVS2 VVS1 IF
## 741 9194 13065 12258 8171 5066 3655 1790
#complete aqui
ggplot(diamonds, aes(carat, depth)) + geom_point(aes(color = price), alpha = 0.4)+
facet_grid(~factor(cut))ggplot(mtcars, aes(mpg, qsec)) + geom_point(aes(size = hp), alpha = 0.4)+
facet_grid(factor(cyl)~factor(am), scale="free")ggplot(mtcars, aes(mpg, qsec)) + geom_point(aes(size = hp), alpha = 0.4)+
facet_grid(factor(cyl)~factor(am), scale="free")+
xlab("Nombre")+ # eje x
ylab("Nombre")+ # eje y
ggtitle("Título")+ #título del gráfico
labs(size = "Caballo de potencia") # título de legenda# install.packages(gridExtra)
library(gridExtra)
df <- data.frame(x = 1:10, y = rnorm(100))
p1 <- ggplot(df, aes(x, y)) + geom_point()
p2 <- ggplot(df, aes(y)) + geom_histogram()
grid.arrange(p1, p2)## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
##
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
##
## last_plot
## The following object is masked from 'package:stats':
##
## filter
## The following object is masked from 'package:graphics':
##
## layout
ggplotly(ggplot(data = mtcars) + geom_histogram(aes(x=qsec,fill=factor(am)),bins=10, position = "identity",alpha = 0.5))Utiliza los datos de WorldPhones y dibuja las series temporales con puntos y lineas de los diferentes continentes. Observe la organizacion y tipo de datos. Convierta a data.frame.
Explora en google ejemplos de ggplot
Carga datos propios en R y dibuja gráficos de histograma y de cajas.