Buscar..


Observaciones

ggplot2 tiene su propio sitio web de referencia perfecto http://ggplot2.tidyverse.org/ .

La mayoría de las veces, es más conveniente adaptar la estructura o el contenido de los datos trazados (por ejemplo, un data.frame ) que ajustar las cosas dentro de la trama después.

RStudio publica una hoja de trucos muy útil "Visualización de datos con ggplot2" que se puede encontrar aquí .

Gráfico de dispersión

Trazamos un diagrama de dispersión simple utilizando el conjunto de datos de iris integrado de la siguiente manera:

library(ggplot2)
ggplot(iris, aes(x = Petal.Width, y = Petal.Length, color = Species)) + 
  geom_point()

Esto da: Diagrama de dispersión de muestra utilizando un conjunto de datos de iris

Visualización de múltiples parcelas

Muestra múltiples gráficos en una imagen con las diferentes funciones de facet . Una ventaja de este método es que todos los ejes comparten la misma escala en los gráficos, lo que facilita su comparación de un vistazo. Usaremos el conjunto de datos mpg incluido en ggplot2 .

Ajustar los gráficos línea por línea (intenta crear un diseño cuadrado):

ggplot(mpg, aes(x = displ, y = hwy)) + 
  geom_point() + 
  facet_wrap(~class)

Mostrar varios gráficos en una fila, varias columnas:

ggplot(mpg, aes(x = displ, y = hwy)) + 
  geom_point() + 
  facet_grid(.~class)

Mostrar varios gráficos en una columna, varias filas:

ggplot(mpg, aes(x = displ, y = hwy)) + 
  geom_point() + 
  facet_grid(class~.)

Muestra múltiples gráficos en una cuadrícula por 2 variables:

ggplot(mpg, aes(x = displ, y = hwy)) + 
  geom_point() + 
  facet_grid(trans~class) #"row" parameter, then "column" parameter

Prepare sus datos para el trazado

ggplot2 funciona mejor con un marco de datos largo. Los siguientes datos de muestra que representan los precios de los dulces en 20 días diferentes, en un formato descrito como amplio, porque cada categoría tiene una columna.

set.seed(47)
sweetsWide <- data.frame(date      = 1:20,
                         chocolate = runif(20, min = 2, max = 4),
                         iceCream  = runif(20, min = 0.5, max = 1),
                         candy     = runif(20, min = 1, max = 3))

head(sweetsWide)
##   date chocolate  iceCream    candy
## 1    1  3.953924 0.5890727 1.117311
## 2    2  2.747832 0.7783982 1.740851
## 3    3  3.523004 0.7578975 2.196754
## 4    4  3.644983 0.5667152 2.875028
## 5    5  3.147089 0.8446417 1.733543
## 6    6  3.382825 0.6900125 1.405674

Para convertir sweetsWide a formato largo para usar con ggplot2 , se ggplot2 usar varias funciones útiles de base R y los paquetes reshape2 , data.table y tidyr (en orden cronológico):

# reshape from base R
sweetsLong <- reshape(sweetsWide, idvar = 'date', direction = 'long', 
                      varying = list(2:4), new.row.names = NULL, times = names(sweetsWide)[-1])

# melt from 'reshape2'
library(reshape2)
sweetsLong <- melt(sweetsWide, id.vars = 'date')

# melt from 'data.table'
# which is an optimized & extended version of 'melt' from 'reshape2'
library(data.table)
sweetsLong <- melt(setDT(sweetsWide), id.vars = 'date')

# gather from 'tidyr'
library(tidyr)
sweetsLong <- gather(sweetsWide, sweet, price, chocolate:candy)

Los todos dan un resultado similar:

head(sweetsLong)
##   date     sweet    price
## 1    1 chocolate 3.953924
## 2    2 chocolate 2.747832
## 3    3 chocolate 3.523004
## 4    4 chocolate 3.644983
## 5    5 chocolate 3.147089
## 6    6 chocolate 3.382825

Consulte también Reforma de datos entre formularios largos y anchos para obtener detalles sobre la conversión de datos entre formatos largos y anchos .

El resultado sweetsLong tiene una columna de precios y una columna que describe el tipo de dulce. Ahora trazar es mucho más simple:

library(ggplot2)
ggplot(sweetsLong, aes(x = date, y = price, colour = sweet)) + geom_line()

gráfico de líneas de datos de dulces

Añadir líneas horizontales y verticales para trazar

Agregue una línea horizontal común para todas las variables categóricas

# sample data
df <- data.frame(x=('A', 'B'), y = c(3, 4))

p1 <- ggplot(df, aes(x=x, y=y)) 
        + geom_bar(position = "dodge", stat = 'identity') 
        + theme_bw()

p1 + geom_hline(aes(yintercept=5), colour="#990000", linetype="dashed")

plot1

Agrega una línea horizontal para cada variable categórica

# sample data
df <- data.frame(x=('A', 'B'), y = c(3, 4))

# add horizontal levels for drawing lines
df$hval <- df$y + 2

p1 <- ggplot(df, aes(x=x, y=y)) 
        + geom_bar(position = "dodge", stat = 'identity') 
        + theme_bw()

p1 + geom_errorbar(aes(y=hval, ymax=hval, ymin=hval), colour="#990000", width=0.75)

parcela2

Añadir línea horizontal sobre barras agrupadas

# sample data
df <- data.frame(x = rep(c('A', 'B'), times=2), 
             group = rep(c('G1', 'G2'), each=2), 
             y = c(3, 4, 5, 6), 
             hval = c(5, 6, 7, 8))

p1 <- ggplot(df, aes(x=x, y=y, fill=group)) 
        + geom_bar(position="dodge", stat="identity")

p1 + geom_errorbar(aes(y=hval, ymax=hval, ymin=hval), 
               colour="#990000", 
               position = "dodge", 
               linetype = "dashed")

plot3

Añadir linea vertical

# sample data
df <- data.frame(group=rep(c('A', 'B'), each=20), 
                 x = rnorm(40, 5, 2), 
                 y = rnorm(40, 10, 2))

p1 <-  ggplot(df, aes(x=x, y=y, colour=group)) + geom_point()

p1 + geom_vline(aes(xintercept=5), color="#990000", linetype="dashed")

introduzca la descripción de la imagen aquí

Gráfico de barras verticales y horizontales

ggplot(data = diamonds, aes(x = cut, fill =color)) +
  geom_bar(stat = "count", position = "dodge")

introduzca la descripción de la imagen aquí

es posible obtener un gráfico de barras horizontal simplemente agregando la estética coord_flip () al objeto ggplot:

  ggplot(data = diamonds, aes(x = cut, fill =color)) +
  geom_bar(stat = "count", position = "dodge")+
  coord_flip()

introduzca la descripción de la imagen aquí

Argumento de violín

Las gráficas de violín son estimaciones de densidad del núcleo reflejadas en el plano vertical. Se pueden usar para visualizar varias distribuciones una al lado de la otra, y el reflejo ayuda a resaltar cualquier diferencia.

ggplot(diamonds, aes(cut, price)) +
  geom_violin()

argumento de violín básico

Las tramas de violín se nombran por su parecido con el instrumento musical, esto es particularmente visible cuando se combinan con una gráfica de caja superpuesta. Esta visualización luego describe las distribuciones subyacentes tanto en términos del resumen de 5 números de Tukey (como diagramas de caja) como en las estimaciones de densidad continua completa (violines).

ggplot(diamonds, aes(cut, price)) +
  geom_violin() +
  geom_boxplot(width = .1, fill = "black", outlier.shape = NA) +
  stat_summary(fun.y = "median", geom = "point", col = "white")

argumento de violín con boxplot

Producir parcelas básicas con qplot.

qplot pretende ser similar a la función base r plot() , intentando siempre trazar sus datos sin requerir demasiadas especificaciones.

qplot básico

qplot(x = disp, y = mpg, data = mtcars)

introduzca la descripción de la imagen aquí

añadiendo colores

qplot(x = disp, y = mpg, colour = cyl,data = mtcars)

introduzca la descripción de la imagen aquí

añadiendo un suave

qplot(x = disp, y = mpg, geom = c("point", "smooth"), data = mtcars)

introduzca la descripción de la imagen aquí



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow