Tutorial sobre como manipular los ejes de un gráfico hecho con ggplot2, en R.

Puedes seguir el tutorial por vídeo en https://youtu.be/1QTMide5wUA

Empezamos estableciendo el directorio de trabajo.

setwd("~/Expression/Expression Encoder/Output/40 GGPLOT2 Modificar ejes")

Creamos nuestro DataFrame.

Ya usamos el mismo en vídeos anteriores.

Tratamiento = factor(c(1,2,1,2,1,2),labels=c("Testigo", "Tratado"))
Color = factor(c(1,1,2,2,3,3),labels=c("Verde","Envero","Negra"))
Aceitunas = c(72,33,11,8,17,59)

df=data.frame(Tratamiento,Color,Aceitunas) 
df
##   Tratamiento  Color Aceitunas
## 1     Testigo  Verde        72
## 2     Tratado  Verde        33
## 3     Testigo Envero        11
## 4     Tratado Envero         8
## 5     Testigo  Negra        17
## 6     Tratado  Negra        59

Generamos el gráfico que aprendimos a hacer en vídeos anteriores

Recuerda cargar el paquete ggplot2 y extrafont.

Este es el código del gráfico que acabamos generando la última vez.

Grafico = ggplot(data=df, aes(x=Tratamiento, y=Aceitunas, fill=Color)) + 
    geom_bar(stat="identity", position=position_dodge()) +
    scale_fill_manual(values=c("darkgreen", "purple","black")) + 
    theme (text = element_text(size=8)) + # Tamaño de fuente del grafico por defecto
    ggtitle ("Estado de maduración de aceitunas \n con distintos tratamientos") + # Título del gráfico
    theme (plot.title = element_text(family="Comic Sans MS",
                                  size=rel(2), #Tamaño relativo de la letra del título
                                  vjust=2, #Justificación vertical, para separarlo del gráfico
                                  face="bold", #Letra negrilla. Otras posibilidades "plain", "italic", "bold" y "bold.italic"
                                  color="red", #Color del texto
                                  lineheight=1.5)) + #Separación entre líneas
    labs(x = "Tratamientos",y = "Porcentaje de aceitunas (%)") + # Etiquetas o títulos de los ejes
    #theme(axis.title = element_text(face="italic", colour="brown", size=rel(1.5))) # Tamaño de los títulos de los ejes
    theme(axis.title.x = element_text(face="bold", vjust=-0.5, colour="orange", size=rel(1.5))) +
    theme(axis.title.y = element_text(face="bold", vjust=1.5, colour="blue", size=rel(1.5))) 

Grafico

Se puede simplificar, introduciendo las características del tema del título en un objeto y además estableciendo que los títulos de los ejes tengan el mismo formato.

TemaTitulo = element_text(family="Comic Sans MS",
                                  size=rel(2), #Tamaño relativo de la letra del título
                                  vjust=2, #Justificación vertical, para separarlo del gráfico
                                  face="bold", #Letra negrilla. Otras posibilidades "plain", "italic", "bold" y "bold.italic"
                                  color="red", #Color del texto
                                  lineheight=1.5) #Separación entre líneas

Grafico = ggplot(data=df, aes(x=Tratamiento, y=Aceitunas, fill=Color)) + 
    geom_bar(stat="identity", position=position_dodge()) +
    scale_fill_manual(values=c("darkgreen", "purple","black")) + 
    theme (text = element_text(size=8)) + # Tamaño de fuente del grafico por defecto
    ggtitle ("Estado de maduración de aceitunas \n con distintos tratamientos") + # Título del gráfico
    theme (plot.title = TemaTitulo) + # Etiquetas o títulos de los ejes
    theme (axis.title = element_text(face="bold", colour="blue", size=rel(1.5))) # Características de los títulos de los ejes

Grafico

Manipulación del estilo del texto de los ejes.

Grafico2 = Grafico + 
    theme (axis.text.x = element_text(face="italic", colour="red", size=rel(2)),
           axis.text.y = element_text(face="bold", colour="chocolate4", size=rel(2), angle=90, hjust=0.5))
Grafico2

Usa la ayuda para ver los argumentos de element_text.

?element_text

Manipulación de las escalas discretas de los ejes (variables tipo factor).

Mostramos solamente una de las variables del eje abcisas.

Grafico2 + scale_x_discrete(limit = c("Testigo"))

Cambiamos el orden de aparición de las variables. En vídeos anteriores lo hicimos cambiando el orden de las variables, manipulando el factor correspondiente.

df$Tratamiento = factor(df$Tratamiento, levels=c("Tratado", "Testigo"))

Pero también se puede hacer de forma que el cambio no afecte a los datos, tan sólo al gráfico.

Grafico2 + scale_x_discrete(limit = c("Tratado", "Testigo"))

También puede interesar borrar una de las etiquetas.

Grafico2 + scale_x_discrete(breaks = c("Testigo")) #Ver diferencia entre "breaks" y "limit"

Podemos cambiar el nombre de las etiquetas.

Grafico2 #Recordamos como era el gráfico original

Grafico2 + scale_x_discrete(limit = c("Testigo", "Tratado"),
                     labels = c("Tratamiento nuevo","Tratamiento referencia"))

Manipulacion de las escalas continuas de los ejes (variables tipo numéricas).

Cambiamos el rango de datos del eje de ordenadas.

Grafico2 + scale_y_continuous(limit = c(0,200))

#Grafico2 + ylim(0,150) #Otra forma

Cambiamos la frecuencia y la disposición de las marcas.

Grafico2 + scale_y_continuous(breaks=seq(0, 70, 10)) #Marcas del 0 al 70, cada 10.

Grafico2 + scale_y_continuous(breaks=seq(20, 50, 5)) #Las marcas no tienen por qué ocupar todo el eje.

Grafico2 + scale_y_continuous(breaks=c(0, 35, 70)) #Especificamos las marcas que queremos.

Grafico2 + scale_y_continuous(breaks=c(0, 35, 70), 
                              labels=c("Ninguna", "La mitad", "Casi todas")) #Las personalizamos.

Grafico2 + scale_y_continuous(breaks=NULL) #Las borramos.

Grafico2 + theme(axis.ticks = element_blank(), 
                 axis.text.y = element_blank()) #Igual que el anterior pero con las líneas horizontales.

Podemos cambiar también establecer los límites del eje y decidir como se dispondrán las marcas, al mismo tiempo.

Grafico2 + scale_y_continuous(limit = c(0,80), breaks=seq(10, 70, 5))

Revertimos el orden del eje de ordenadas.

Grafico2 + scale_y_continuous(trans = "reverse")

#Grafico2 + scale_y_reverse() #Otra forma