Graficos con ggplot

“ggplot2 es una visualización de datos de paquete para la programación estadística lenguaje R . Creado por Hadley Wickham en 2005, ggplot2 es una implementación de la Gramática de gráficos de Leland Wilkinson , un esquema general para la visualización de datos que divide los gráficos en componentes semánticos como escalas y capas. ggplot2 puede servir como un reemplazo para los gráficos base en R y contiene una serie de valores predeterminados para la visualización web e impresa de escalas comunes. Desde 2005, ggplot2 ha crecido en uso para convertirse en uno de los paquetes R más populares. Está licenciado bajo GNU GPL v2.” Wikipedia

Gráficos

La construcción se realiza por capas primero se indican los datos, luego se indica la geometría.

# Grafico de dispersión
ggplot(data=mpg)+
  geom_point(mapping = aes(x=cty,y=hwy),
             color="red",
             shape=2,
             size=4,
             fill="salmon")

#Boxplot
ggplot(data=mpg)+
  geom_boxplot(mapping = aes(x=drv,y=cty),
               color="blue",
               fill="red")

#Gráfico de barras
ggplot(data=mpg)+
  geom_bar(mapping = aes(x=drv))

# varias  geometrias juntas(capas)
ggplot(mpg,mapping=aes(x=drv,y=cty))+
  geom_boxplot(fill="blue")+
  geom_jitter(color="red")+
  geom_violin(fill="salmon",alpha=0.4)+
  coord_flip()+coord_flip()

Modificando características de los Gráficos

Las caracteristicas que se pueden modificar son :

  • Color
  • Relleno
  • Tamaño
  • Forma
  • Transparencia.

Las modificaciones pueden realizarse en el parámetro “mapping”. Para realizar las modificaciones de las características se utilizan variables categóricas(tipo factor) del conjunto de datos que se esté utilizando.

ggplot(mpg)+
  geom_point(mapping = aes(x=cty,y=hwy,
                           size=drv,
                           color=as.factor(cyl),
                           shape=fl))

ggplot(mpg)+
  geom_bar(aes(x=manufacturer,
               fill=as.factor(year)))+
  coord_flip()

Histogramas

ggplot(mpg)+
  geom_histogram(aes(x=cty,
                     y=-..density..),bins=20,
                 fill="steelblue")

ggplot(mpg,aes(x=cty))+
  geom_histogram(aes(y=..density..),
                 fill="red")+
  geom_histogram(aes(x=hwy,y=-..density..))

ggplot(mpg,aes(x=cty,y=..density..),xlim(0,40))+
  geom_histogram(color="steelblue")+
  geom_density(fill="salmon",
               alpha=0.4)

ggplot(ToothGrowth,aes(x=len,y=..density..))+
  geom_histogram(fill="salmon2")+
  geom_density(fill="blue",alpha=0.5)

Gráficos de barras

ggplot(mpg)+
  geom_bar(aes(x=drv,
               fill=as.factor(year)),
           position = "dodge")

ggplot(mpg)+
  geom_bar(aes(x=drv,
               fill=as.factor(year)),
           position = "stack")

ggplot(mpg)+
  geom_bar(aes(x=drv,
               fill=as.factor(year)),
           position = "fill")

Boxplot

ggplot(mpg)+
  geom_boxplot(aes(x=as.factor(year),y=cty),
               fill="salmon3",
               outlier.color = "red",
               outlier.shape = 3)+
  coord_flip()

Agregando títulos al gráfico

ggplot(mpg)+
  geom_boxplot(aes(x=as.factor(year),y=cty),
               fill="salmon3",
               outlier.color = "red",
               outlier.shape = 3)+
  coord_flip()+
  labs(title = "consumo en ciudad",
       subtitle = "Por año",
       caption = "fuente ggplot dataset")+
  theme_linedraw()

Facetas

ggplot(mpg)+
  geom_point(aes(x=cty,y=hwy))+
  facet_grid(.~cyl)

ggplot(mpg,aes(x=cty,y=hwy))+
  geom_point()+
  geom_smooth(se=F,formula = y~x)+
  facet_grid(cyl~drv)

##############
ggplot(mpg,aes(x=displ,y=hwy))+
  geom_point(aes(color=class,
                 shape=drv),size=3)+
  facet_grid(cyl~.)+
  theme_linedraw()+
  labs(x="Volumen del motor en lt",
       y="rendimient en mpg",
       title = "Rendimiento/tamaño del motor",
       subtitle = "para 4 5 6 y 8 cilindros",
       caption = "ggplot dataset")

Gráfico de Dona

df<-data.frame(
  categorias=c("setosa","versicolor","virginica"),
  porcentaje=c(25,60,15))
df
##   categorias porcentaje
## 1     setosa         25
## 2 versicolor         60
## 3  virginica         15
ggplot(df,aes(x=2,y=porcentaje,
             fill=categorias))+
  geom_bar(stat="identity")+
  coord_polar(theta = "y")+
  xlim(0.5,2.5)+theme_void()+
geom_text(aes(label=porcentaje),
          position = position_stack(vjust=0.5))