tutorial qplot graphs ggplot espaƱol barplot r graphics ggplot2

graphs - qplot r



Trazando un "logo de secuencia" usando ggplot2? (6)

Ahora hay un paquete gglogo (también en CRAN, otra increíble extensión ggplot2 de Heike Hofmann).

Este paquete que produce tramas como estas:

library(ggplot2) library(gglogo) ggplot(data = ggfortify(sequences, "peptide")) + geom_logo(aes(x=position, y=bits, group=element, label=element, fill=interaction(Polarity, Water)), alpha = 0.6) + scale_fill_brewer(palette="Paired") + theme(legend.position = "bottom")

El ejemplo es de https://github.com/heike/gglogo/blob/master/visual_test/logos.R y hay un manuscrito en el paquete aquí: https://github.com/heike/logopaper/blob/master/logos.Rmd

¿Es (razonablemente) posible trazar un diagrama de secuencia de logotipo usando ggplot2?

Hay un paquete para hacerlo basado en "grid" llamado " seqLogo ", pero me preguntaba si podría haber una versión de ggplot2.

Gracias.


Aquí hay una opción alternativa. motiflogo es una nueva representación del logotipo de motivo (secuencia) implementado por ggplot2. Dos aspectos podrían ser considerados.

  1. Como una representación de logotipo de motivo canónico
  2. Como una representación de logotipo de motivo específico de SNP

Estoy enviando un intento de ggplot2 que es algo similar a la solución anterior de Leipzig / Berry. Este formato es un poco más cercano al logograma estándar.

Pero mi solución, y creo que cualquier solución de ggplot2 , aún no es ggplot2 porque ggplot2 no ofrece control sobre la relación de aspecto de los símbolos de trazado . Esta es la capacidad central que (creo) es necesaria para generar logotipos de secuencia y que falta en ggplot2 .

También tenga en cuenta: utilicé los datos de la respuesta de Jeremy Leipzig , pero no hice ninguna corrección para tamaños de muestra pequeños o para valores de% GC diferentes al 50%.

require(ggplot2) require(reshape2) freqs<-matrix(data=c(0.25,0.65,0.87,0.92,0.16,0.16,0.04,0.98,0.98,1.00,0.02,0.10,0.10,0.80,0.98,0.91,0.07,0.07,0.11,0.05,0.04,0.00,0.26,0.17,0.00,0.01,0.00,0.00,0.29,0.17,0.01,0.03,0.00,0.00,0.32,0.32,0.53,0.26,0.07,0.02,0.53,0.18,0.96,0.01,0.00,0.00,0.65,0.01,0.89,0.17,0.01,0.09,0.59,0.12,0.11,0.04,0.02,0.06,0.05,0.49,0.00,0.00,0.02,0.00,0.04,0.72,0.00,0.00,0.01,0.00,0.02,0.49),byrow=TRUE,nrow=4,dimnames=list(c(''A'',''C'',''G'',''T''))) freqdf <- as.data.frame(t(freqs)) freqdf$pos = as.numeric(as.character(rownames(freqdf))) freqdf$height <- apply(freqdf[,c(''A'', ''C'',''G'',''T'')], MARGIN=1, FUN=function(x){2-sum(log(x^x,base=2))}) logodf <- data.frame(A=freqdf$A*freqdf$height, C=freqdf$C*freqdf$height, G=freqdf$G*freqdf$height, T=freqdf$T*freqdf$height, pos=freqdf$pos) lmf <- melt(logodf, id.var=''pos'') quartz(height=3, width=8) ggplot(data=lmf, aes(x=as.numeric(as.character(pos)), y=value)) + geom_bar(aes(fill=variable,order=value), position=''stack'', stat=''identity'', alpha=0.5) + geom_text(aes(label=variable, size=value, order=value, vjust=value), position=''stack'') + theme_bw() quartz.save(''_5438474.png'', type=''png'')

Eso produce este gráfico:


He implementado una alternativa diseñada por Charles Berry, que aborda algunas de las debilidades de los seqLogos discutidos ad nauseam en la sección de comentarios a continuación. Utiliza ggplot2:

library("devtools") install_github("leipzig/berrylogo") library("berrylogo") freqs<-matrix(data=c(0.25,0.65,0.87,0.92,0.16,0.16,0.04,0.98,0.98,1.00,0.02,0.10,0.10,0.80,0.98,0.91,0.07,0.07,0.11,0.05,0.04,0.00,0.26,0.17,0.00,0.01,0.00,0.00,0.29,0.17,0.01,0.03,0.00,0.00,0.32,0.32,0.53,0.26,0.07,0.02,0.53,0.18,0.96,0.01,0.00,0.00,0.65,0.01,0.89,0.17,0.01,0.09,0.59,0.12,0.11,0.04,0.02,0.06,0.05,0.49,0.00,0.00,0.02,0.00,0.04,0.72,0.00,0.00,0.01,0.00,0.02,0.49),byrow=TRUE,nrow=4,dimnames=list(c(''A'',''C'',''G'',''T''))) p<-berrylogo(freqs,gc_content=.41) print(p)


No hay manera directa de hacerlo en ggplot2, en lo que a mí respecta.

Sin embargo, consulte RWebLogo. Es un contenedor R que he escrito para la biblioteca de python WebLogo. Puedes descargarlo de CRAN y está alojado en github

Ejemplo simple:

# Load package library(''RWebLogo'') # Sample alignment aln <- c(''CCAACCCAA'', ''CCAACCCTA'', ''AAAGCCTGA'', ''TGAACCGGA'') # Plot logo to file weblogo(seqs=aln, file.out=''logo.pdf'') # Plot logo to R graphics device (uses generated jpeg logo and raster package) weblogo(seqs=aln, plot=TRUE, open=FALSE, format=''jpeg'', resolution=600)

Para ver más opciones, vea ?weblogo o ?plotlogo


ggseqlogo debe ser lo que estás buscando. Espero que esto pueda aliviar algunas de las frustraciones que estoy seguro que muchos de ustedes tienen cuando se trata de trazar logos de secuencia en R