manipulation ggtitle ggplot cheatsheet change r ggplot2 correlation ggally

ggtitle - usa ggpairs para crear esta trama



ggplot title size (1)

Tengo un código en una aplicación brillante que produce la primera gráfica a continuación. Como puede ver, el tamaño de fuente varía con el tamaño del coeficiente de correlación. Me gustaría producir algo similar con ggpairs (GGally) o ggplot2. La segunda imagen a continuación fue producida con el siguiente código:

library(GGally) ggpairs(df, upper = list(params = c(size = 10)), lower = list(continuous = "smooth", params = c(method = "loess", fill = "blue")) )

Como puede ver, el tamaño de la fuente de correlación es ajustable usando el tamaño, pero cuando configuro un vector de tamaños solo se usa el primer valor. También me gustaría eliminar ''Corr:'' y agregar un indicador de importancia. Usar colores para el signo del coeficiente de correlación también sería bueno. En la parte inferior, el method y el fill no están vinculados a la smooth . Cualquier sugerencia sobre cómo obtener la segunda trama para capturar más características de la primera sería genial.

Datos de Anscombe :

df <- structure(list(y1 = c(8.04, 6.95, 7.58, 8.81, 8.33, 9.96, 7.24, 4.26, 10.84, 4.82, 5.68), x1 = c(10L, 8L, 13L, 9L, 11L, 14L, 6L, 4L, 12L, 7L, 5L), y2 = c(9.14, 8.14, 8.74, 8.77, 9.26, 8.1, 6.13, 3.1, 9.13, 7.26, 4.74), x2 = c(10L, 8L, 13L, 9L, 11L, 14L, 6L, 4L, 12L, 7L, 5L), y3 = c(7.46, 6.77, 12.74, 7.11, 7.81, 8.84, 6.08, 5.39, 8.15, 6.42, 5.73), x3 = c(10L, 8L, 13L, 9L, 11L, 14L, 6L, 4L, 12L, 7L, 5L)), .Names = c("y1", "x1", "y2", "x2", "y3", "x3"), class = "data.frame", row.names = c(NA, -11L))

# based mostly on http://gallery.r-enthusiasts.com/RGraphGallery.php?graph=137 panel.plot <- function(x, y) { usr <- par("usr"); on.exit(par(usr)) par(usr = c(0, 1, 0, 1)) ct <- cor.test(x,y) sig <- symnum(ct$p.value, corr = FALSE, na = FALSE, cutpoints = c(0, 0.001, 0.01, 0.05, 0.1, 1), symbols = c("***", "**", "*", ".", " ")) r <- ct$estimate rt <- format(r, digits=2)[1] cex <- 0.5/strwidth(rt) text(.5, .5, rt, cex=cex * abs(r)) text(.8, .8, sig, cex=cex, col=''blue'') } panel.smooth <- function (x, y) { points(x, y) abline(lm(y~x), col="red") lines(stats::lowess(y~x), col="blue") } pairs(df, lower.panel=panel.smooth, upper.panel=panel.plot)


Editar para GGally 1.0.1

Como params ahora está en desuso, use el wrap manera:

ggpairs(df[, 1:2], upper = list(continuous = wrap("cor", size = 10)), lower = list(continuous = "smooth"))

Respuesta original

La personalización de gráficos complicados no siempre está disponible a través de la lista de parámetros. Eso es natural: hay demasiados parámetros para tener en cuenta. Entonces la única opción confiable es modificar la fuente. Esto es especialmente agradable cuando el proyecto está alojado en github .

Aquí hay una modificación simple para comenzar, hecha en un repositorio bifurcado . La forma más sencilla de actualizar el código y generar el gráfico a continuación es copiar y pegar la función ggally_cor en su entorno global, y luego anular la misma función en el espacio de nombres GGally :

# ggally_cor <- <...> assignInNamespace("ggally_cor", ggally_cor, "GGally") ggpairs(df[, 1:2], upper = list(params = c(size = 10)), lower = list(continuous = "smooth"))

Eliminé la etiqueta de texto y agregué indicadores de significancia. Sin embargo, modificar el color y el tamaño no es tan fácil, ya que se asignaron anteriormente. Todavía estoy pensando en eso, pero entiendes la idea y puedes continuar con tus personalizaciones adicionales.

Editar: he actualizado el código, veo mi última confirmación. Ahora asigna el tamaño de la etiqueta al valor absoluto de la correlación. Puedes hacer algo similar si quieres un color diferente, aunque creo que esta es probablemente una idea no muy buena.