use ggpairs para criar este enredo

Eu tenho algum código em um aplicativo shiny que produz o primeiro gráfico abaixo. Como você pode ver, o tamanho da fonte varia de acordo com o tamanho do coeficiente de correlação. Eu gostaria de produzir algo semelhante com ggpairs (GGally) ou ggplot2. A segunda imagem abaixo foi produzida com o seguinte código:

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

Como você pode ver, o tamanho da fonte de correlação é ajustável usando o tamanho, mas quando eu defino um vetor de tamanhos, apenas o primeiro valor é usado. Eu também gostaria de remover ‘Corr:’ e adicionar um indicador de significância. Usando colors para o sinal do coeficiente de correlação também seria bom. Em menor, method e fill não estão ligados para smooth . Qualquer sugestão sobre como obter o segundo lote para capturar mais resources do 1º seria ótima.

Dados da 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)) 

gráfico de correlação usando pares

 # 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) 

gráfico de correlação usando ggpairs

Editar para GGally 1.0.1

Como params agora está obsoleto, use o wrap forma:

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

insira a descrição da imagem aqui

Resposta original

A personalização de plotagens complicadas nem sempre está disponível por meio da lista de parâmetros. Isso é natural: há muitos parâmetros para se ter em mente. Portanto, a única opção confiável é modificar a fonte. Isso é especialmente agradável quando o projeto está hospedado no github .

Aqui está uma modificação simples para começar, feita em um repository bifurcado . A maneira mais fácil de atualizar o código e produzir o gráfico abaixo é copiar e colar a function ggally_cor em seu ambiente global e, em seguida, replace a mesma function no namespace GGally :

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

insira a descrição da imagem aqui

Eu removi o marcador de texto e adicionei indicadores de significância. Modificar cor e tamanho não é tão fácil, já que eles são mapeados anteriormente. Ainda estou pensando nisso, mas você tem a ideia e pode continuar com suas personalizações adicionais.

Edit: eu atualizei o código, ver meu último commit. Agora, mapeia o tamanho do label para o valor absoluto da correlação. Você pode fazer coisas parecidas se quiser colors diferentes, embora eu ache que essa provavelmente não seja uma boa idéia.

insira a descrição da imagem aqui

    Intereting Posts