首页 > 解决方案 > 调整条形图中点的位置

问题描述

当我尝试在图表中添加线条时,我对如何获得正确的索引来绘制线条感到困惑,以便点可以位于条形的中间,下面是图表和我用来绘制它的代码. 我想知道如何调整代码以使点的定位更好。

cupbp<-read.xlsx("Go.xlsx",sheet=2)
cupbp2<-subset(cupbp,PValue<0.05)
cupbp2$P.value<-log(cupbp2$PValue,base=2)
cupbp2$P.value<-abs(cupbp2$P.value)
cupbp2$bp<-substr(cupbp2$Term,12,nchar(cupbp2$Term))  
opar<-par(no.readonly=T)
par(mar=c(5,25,7,10)+0.1) 
par(cex.axis=0.6)

mybar<-barplot(height=cupbp2$P.value,names=cupbp2$bp,horiz=TRUE,las=1,xaxt="n",col="red",xlab="-log2 P value",xlim=c(0,ceiling(max(cupbp2$P.value))))
title("control vs AD up Bioprocess",line=4,adj=0.5)
axis(side=1,at=axTicks(1))
par(new=T)

plot(cupbp2$Count, mybar,
     type="o", pch=19, lwd=2, col="yellow", cex=1.2,
     ann=F,xaxt="n",yaxt="n",xlab="Gene number")
axis(side=3,at=axTicks(3))
mtext("Gene number",3,line=2)
par(opar)

在此处输入图像描述

Barplot 函数提供了中点值,在我的示例中存储在“mybar”中,但是,plot 函数不适合绘制线条,原因是我现在不太明白,将 plot(count, mybar) 更改为 lines( count, mybar) 解决了点位置的问题,但是这次图的轴出了问题。也许使用 lines() 会导致 R 认为第二个图不是新图,因此轴被包含为原始图。参见这个修改示例,其中基因编号轴应为 0 到 7,但保留为原始轴的 0 到 14。

在此处输入图像描述

请给我关于如何按预期调整数字的宝贵建议。

标签: rlinebar-chart

解决方案


没有您的数据,我无法在我这边尝试,但我认为这是可能的:首先,将您的基因数乘以 2,然后生成图形,但将 0 标记为“0”,将 4 标记为“2”,将 6 标记为"3", 8 为 "4" ... 和 14 为 "7"。


推荐阅读