3

我在 R 中使用了以下代码来生成此图:

x  <- c(0.916, 0.815, 0.101, -0.029, -0.166, 0.949, 0.073, -0.054, 1.006)
y  <- c(3.91,  5.17,  1.08,   1.28,   1.01,  4.37,  3.97,   0.77,  4.52)
sd <- c(0.35,  2.26,  0.17,   0.08,   0.27,  0.49,  0.65,   0.12,  1.45)
windows()
plot(x,y, ylim=c(0, 8), xlim=c(-0.4, 1.2), pch=19, cex.axis=0.8, 
     cex.lab=0.9, xlab="Male/Female expression ratio (log)", 
     ylab="Z/W expression ratio in females", las=1)
for (i in 1:9) {
  up  <- y[i] + sd[i]
  low <- y[i] - sd[i]
  segments(x[i],      low, x[i],      up)
  segments(x[i]-0.02, up,  x[i]+0.02, up)
  segments(x[i]-0.02, low, x[i]+0.02, low)
}

我的问题是,我怎样才能摆脱两个上轴和右轴,只保留下轴和左轴?

在下图中

4

3 回答 3

5

如果您想保持盒子状外观而不是“自由浮动”轴,bty ="l"请在命令中添加(小写 L)plot

导致:

plot(x, y, ylim=c(0, 8), xlim=c(-0.4, 1.2), pch=19, cex.axis=0.8, 
     cex.lab=0.9, xlab="Male/Female expression ratio (log)", 
     ylab="Z/W expression ratio in females", las=1, bty = "l")

这只会删除上部和右侧的框架条。也可以看看?par

编辑:
查看您的图表和您的计算,您似乎想要绘制特定组的平均值,然后还显示一些标准偏差。在这种情况下,我建议boxplot()您查看使用原始数据为您执行此操作的命令。看?boxplot

于 2013-09-14T11:04:44.260 回答
1

您也可以尝试frame = FALSE在您的绘图命令中添加:

plot(x, y, ylim=c(0, 8), xlim=c(-0.4, 1.2), pch=19, cex.axis=0.8, 
     cex.lab=0.9, xlab="Male/Female expression ratio (log)", 
     ylab="Z/W expression ratio in females", las=1, frame = FALSE)
于 2013-09-14T22:02:18.910 回答
0

@r0bert 和 @CarlosV 提供了很好的答案。还有另一种选择:您可以使用参数抑制轴,axes=FALSE然后使用?axis构造您自己的轴,这可以让您更好地控制。这是一些示例代码(作为奖励,我说明了@thelatemail 关于矢量化版本的评论segment()):

plot(x, y, axes=FALSE, ylim=c(0, 8), xlim=c(-0.4, 1.2), pch=19, 
     cex.axis=0.8, cex.lab=0.9, xlab="Male/Female expression ratio (log)", 
     ylab="Z/W expression ratio in females")
axis(side=1, cex.axis=0.8, cex.lab=0.9)
axis(side=2, cex.axis=0.8, cex.lab=0.9, las=1)
segments(x,      y-sd, x,      y+sd)
segments(x-0.02, y+sd, x+0.02, y+sd)
segments(x-0.02, y-sd, x+0.02, y-sd)

在此处输入图像描述

于 2013-09-15T01:12:21.547 回答