在R中使用image()。如何将x轴上的刻度线左对齐?

问题描述 投票:0回答:1

我正在用一个由0和1行组成的数据表制作一个双色图,像这样。

mem/Bur_05_sorted.bam_A 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
mem/Bur_05_sorted.bam_B 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
mem/Ell_06_sorted.bam_A 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
mem/Ell_06_sorted.bam_B 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 
mem/Ell_07_sorted.bam_A 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
mem/Ell_07_sorted.bam_B 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 
mem/Ste_01_sorted.bam_A 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
mem/Ste_01_sorted.bam_B 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 
mem/Sto_02_sorted.bam_A 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
mem/Sto_02_sorted.bam_B 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 
mem/Sto_03_sorted.bam_A 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
mem/Sto_03_sorted.bam_B 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 
mem/Sto_07_sorted.bam_A 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
mem/Sto_07_sorted.bam_B 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 
mem/Vog_01_sorted.bam_A 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
mem/Vog_01_sorted.bam_B 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 
mem/Vog_02_sorted.bam_A 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
mem/Vog_02_sorted.bam_B 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
mem/Vog_03_sorted.bam_A 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
mem/Vog_03_sorted.bam_B 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 
mem/Vog_04_sorted.bam_A 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
mem/Vog_04_sorted.bam_B 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 
mem/Vog_05_sorted.bam_A 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
mem/Vog_05_sorted.bam_B 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 
mem/Vog_06_sorted.bam_A 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
mem/Vog_06_sorted.bam_B 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 

用这个代码:

a<-read.table("L_1616.vit.txt",row.names=1)

rowlabs = c("Bur_05_A","Bur_05_B","Ell_06_A","Ell_06_B","Ell_07_A","Ell_07_B","Ste_01_A","Ste_01_B","Sto_02_A","Sto_02_B","Sto_03_A","Sto_03_B","Sto_07_A","Sto_07_B","Vog_01_A","Vog_01_B","Vog_02_A","Vog_02_B","Vog_03_A","Vog_03_B","Vog_04_A","Vog_04_B","Vog_05_A","Vog_05_B","Vog_06_A","Vog_06_B")

columnlabs = c(0:(ncol(a)-1))*0.25

x11()
par(mar=c(5,6,4,2)+.1)
image(t(as.matrix(a)),col=c("blue","red"),axes=F)
axis(1,at=seq(0,2,length.out=ncol(a)), labels=columnlabs,las=2)
axis(2,at=seq(1,0,length.out=nrow(a)), labels=rowlabs, las=1)
savePlot("./plots/L_1616.png","png")

在图中,每个 "块 "的刻度线都居中。enter image description here

然而,我想让刻度线对准每个 "块 "的左边中心。像这样。enter image description here

我怎样才能做到这一点?谢谢!我正在做一个双色图。

r image axis
1个回答
1
投票

你需要在你的应用程序中使用 "at "位置。axis(1,...) 调用,这决定了勾号的位置。默认情况下。image() 以0到1的等距值为中心绘制每个图块,所以如果图像上有n个图块,则每个图块的宽度为1n。 所以你需要生成一系列向左偏移12n的 "at "位置。

data=matrix(sample(1:2,192,replace=T),ncol=16)
image(data,axes=F)
x_tick_offset=1/(2*nrow(data))
y_tick_offset=1/(2*ncol(data))
axis(1,at=seq(0,1,length.out=nrow(data))-x_tick_offset,labels=letters[1:nrow(data)])
axis(2,at=seq(1,0,length.out=ncol(data))+y_tick_offset,labels=1:ncol(data),las=2)
© www.soinside.com 2019 - 2024. All rights reserved.