Paquete {ggplot2}

En este apartado solo se aborda como cambiar la posición del eje x o y en un gráfico

# Gráfico original
library(ggplot2)
(p <- ggplot(mtcars, aes(mpg, disp)) +
  theme_classic()+
  geom_point(colour = "darkgreen"))

# Cambia la posición del eje x o y en un gráfico
p + scale_x_continuous(position = 'left')

p + scale_y_continuous(position = 'right')

p + scale_x_continuous(sec.axis = dup_axis())

p + scale_x_continuous(sec.axis = dup_axis()) +
  scale_y_continuous(sec.axis = dup_axis())

p + theme(axis.ticks.length = unit(1, "cm"),
          axis.text.x = element_text(margin = margin(1, unit = "cm"))) +
  scale_x_continuous(sec.axis = dup_axis()) +
  scale_y_continuous(sec.axis = dup_axis())

Paquete {cowplot}

Función theme_nothing()

Crear un tema totalmente vacío

# Crear un tema totalmente vacío
library(cowplot)
ggplot(mtcars, aes(mpg, mpg)) +
  geom_point(colour = "darkgreen") +
  theme_nothing()

Función theme_cowplot()

Crear el tema predeterminado de cowplot

# Crear el tema predeterminado de cowplot
ggplot(mtcars, aes(mpg, mpg)) +
  geom_point(colour = "darkgreen") +
  theme_cowplot() +
  labs(x="x", y="y")

Función plot_grid()

Ordenar varios gráficos en una cuadrícula

# Ordenar varios gráficos en una cuadrícula
p1 <- ggplot(mtcars, aes(mpg, mpg)) +
  geom_point(colour = "darkgreen")
p2 <- ggplot(mtcars, aes(mpg, mpg^2)) +
  geom_point(colour = "darkgreen")
p3 <- ggplot(mtcars, aes(mpg, mpg^3)) +
  geom_point(colour = "darkgreen")
p4 <- ggplot(mtcars, aes(mpg, mpg^4)) +
  geom_point(colour = "darkgreen")

# Cuadrícula simple
plot_grid(p1, p2, p3, p4)

# Cuadrícula simple con etiquetas y gráficos alineados tanto horizontal como vertical
plot_grid(p1, p2, p3, p4, labels=c('A', 'B', 'C', 'D'), align="hv")

# Configurar manualmente el número de filas
plot_grid(p1, p2, p3, nrow=3, labels=c('A', 'B', 'C'), label_size=10, align="v")

# Gráficos faltantes en algunas ubicaciones de la cuadrícula
plot_grid(p1, NULL, NULL, p2, p3, NULL, ncol=2,
          labels=c('A', 'B', 'C', 'D', 'E', 'F'), label_size=10, align="v")

# Filas y columnas de diferentes anchos/alturas.
plot_grid(p1, p2, p3, p4, align='hv', rel_heights=c(2,1), rel_widths=c(1,2))

Función draw_label()

Dibujar una etiqueta de texto o expresión matemática

# Dibujar una etiqueta de texto o expresión matemática
p <- ggplot(mtcars, aes(mpg, disp)) +
  geom_point(colour = "blue2") +
  background_grid(minor='none')
c <- cor.test(mtcars$mpg, mtcars$disp, method='pearson')
# Etiqueta
label <- substitute(paste("Pearson ", rho, " = ", estimate, ", p valor = ", pvalue),
                    list(estimate = signif(c$estimate, 2), pvalue = signif(c$p.value, 2)))
# Añadir etiqueta al gráfico
ggdraw(p) +
  draw_label(label, .65, .94)

# Añadir la etiqueta directamente al gráfico
p + draw_label(label, 22, 450, hjust = 0, vjust = 0)

Función add_sub()

Agregar un comentario debajo de un gráfico

# Agregar un comentario debajo de un gráfico
p1 <- ggplot(mtcars, aes(mpg, disp)) +
  geom_point(colour = "blue2") +
  background_grid(minor='none')
ggdraw(add_sub(p1, "Esto es una anotación.\nLas anotaciones pueden abarcar varias líneas."))

# Nuevas anotaciones
p2 <- add_sub(p1, expression(paste(a^2+b^2, " = ", c^2)))
p3 <- add_sub(p2, "Esta fórmula no tiene relevancia aquí:", y  = 0, vjust = 0)
ggdraw(p3)

# También funciona con gráficos de facetas
plot.iris <- ggplot(iris, aes(Sepal.Length, Sepal.Width)) +
  geom_point() +
  facet_grid(.~ Species) +
  stat_smooth(method = "lm") +
  background_grid(major = 'y', minor = "none") + # añadir líneas horizontales finas
  panel_border() # y un borde alrededor de cada panel
p2 <- add_sub(plot.iris, "Anotación debajo de un gráfico con facetas, justificada a la izquierda.", x = 0, hjust = 0)
ggdraw(p2)

# Finalmente, es posible mover la anotación dentro del gráfico si se desea.
ggdraw(add_sub(p1, "Anotación dentro del gráfico", vpadding=grid::unit(0, "lines"),
       y = 6, x = 0.03, hjust = 0))

Paquete {gapmap}

Función gapmap()

Función para dibujar un mapa de calor agrupado con espacios vacíos

# Función para dibujar un mapa de calor agrupado con espacios vacíos
require(gapmap)
set.seed(12345)
# generar una muestra de datos
x <- rnorm(10, mean=rep(1:5, each=2), sd=0.4)
y <- rnorm(10, mean=rep(c(1,2), each=5), sd=0.4)
df <- data.frame(x=x, y=y, row.names=c(1:10))
# Calcular la matriz de distancias, por defecto es la distancia euclídea
distxy <- dist(df)
# Realizar agrupamiento jerárquico, por defecto es el método complete
hc <- hclust(distxy)
dend <- as.dendrogram(hc)
# Realizar el gráfico
gapmap(m = as.matrix(distxy), d_row= rev(dend), d_col=dend)

Paquete {GGally}

Función scatmat()

Realiza un gráfico triangular inferior, gráficos de densidad en la diagonal principal y gráficas de dispersión por debajo.

require(GGally)
data(flea)
scatmat(flea, columns=2:4)