I am using the following code to plot Chromosome-wide SNP densities. It generates the attached output, such that X-axis for all the chromosomes is of the same length. It can be misleading, as it appears as if the right ends of some (reads short) chromosomes is totally devoid of snps. Can I have shorter X-axes for the shorter chromosomes?? Please help me edit the script to suit my needs
snps<-read.table("no_C_no_M_homo_snps.Galaxy12-[Cut_on_data_10].tabular",sep="\t",header=F,blank.lines.skip=TRUE,
comment.char = "#")
colnames(snps)<-c("chr","start","id","refallele","altallele","qual",
+ "filter","info","format")
summary(snps)
goodChrOrder <- c(paste("Chr",c(1:12),sep=""))
snps$chr <- factor(snps$chr,levels=goodChrOrder)
Plot the densities of snps in the bed file for each chr seperately
library(ggplot2)
snpDensity<-ggplot(snps) +
geom_histogram(aes(x=start),binwidth=1e4,color="brown4") + # pick a binwidth that is not too small
+ facet_wrap(~ chr,ncol=2) + # seperate plots for each chr, x-scales can differ from chr to chr
+ ggtitle("Chromosome-wise homozygous snp distribution") + theme(plot.title = element_text(hjust = 0.5)) +
xlab("Genomic location (bp)") +
ylab("SNP density")
p <- snpDensity
p.labs <- p + labs(title = "Chromosome-wise homozygous SNP distribution", x = "Genomic location(bp)", y = "SNP density")
p.labs
y.6.text <- element_text(size = 6)
## for y axis only
p.labs + theme(axis.text.y = y.6.text)
Free scale the axis @op
"scales: Are scales shared across all facets (the default, "fixed"), or do they vary across rows ("free_x"), columns ("free_y"), or both rows and columns ("free")"
So try adding a
scales="free_x"
argument to yourfacet_wrap
function.some example data would help @OP
Can anyone help with this?
You may wish to reconsider your plot type, as you cannot use a facet when your common axis (chr position) is dissimilar in scaleThis is possible. See: C: Need help with R script to edit x-axis of snp density plotI'd also recommend you try generating separate plots + arranging them into a grid using
gridExtra::arrangeGrob
or thecowplot
package.I have same problem here. Did you figure out how to get shorter x-axis for smaller chromosomes? Thanks!