如何在R中自定义y轴步长

时间:2012-09-28 06:35:34

标签: r statistics

我想绘制一个带有y轴的散点图,其自定义为步长为0.2,范围为0 - 2.6,并且可以自动定义x轴。我尝试了以下,但它不起作用。我可以知道如何正确设置参数吗?


# Read data
pt.n <- read.table("p0_n300m20r1c1_regression.txt", header=T)
# auto-scale
# plot(pt.n$maee~pt.n$idx, main="P2PSim Seq#1,300n,20%,1r,Corrective", ylab="MAEE", xlab="Seq #")

# customize
ylabel <- c(0.2, 0.4, 0.6, 0.8, 1.0, 1.2, 1.4, 1.6, 1.8, 2.0, 2.2, 2.4, 2.6)
y_range <- range(0, ylabel)
plot(pt.n$maee~pt.n$idx, main="P2PSim Seq#3,300n,20%,1r,Corrective", ylab="MAEE", xlab="Seq #", ylim=y_range, axes=FALSE, ann=FALSE)
axis(1, at=0:6, lab=c(0,50,100,150,200,250,300))
axis(2, las=1, at=0.2*0:y_range[1])
box()

1 个答案:

答案 0 :(得分:3)

如果某些东西不起作用,请检查没有做你想做的事情的每一点,确保你提供正确的数据并且没有制作一个booboo。如果我们运行代码中与轴相关的位

ylabel <- c(0.2, 0.4, 0.6, 0.8, 1.0, 1.2, 1.4, 1.6, 1.8, 2.0, 2.2, 2.4, 2.6)
y_range <- range(0, ylabel)
0.2*0:y_range[1]

您会立即看到问题:

R> 0.2*0:y_range[1]
[1] 0

你基本上是在告诉R在0处勾选。即使你选择了y_range的正确元素(最大值在 second 元素中),你仍然不会得到正确的答案:

R> 0.2*0:y_range[2]
[1] 0.0 0.2 0.4
R> 0:y_range[2]
[1] 0 1 2

这是因为:运算符的工作方式。致电x:y本质上是对seq(from = x, to = y, by = 1)的调用,因为2.6+1大于2.6to参数),R会创建序列{{1} }。

如果你想绘制刻度线并在0 - 2.6增加0.2处标记,则使用:

0, 1, 2

ylabel <- seq(0, 2.6, by = 0.2) axis(2, at = ylabel) 现在包含:

ylabel

举例说明:

R> ylabel
[1] 0.0 0.2 0.4 0.6 0.8 1.0 1.2 1.4 1.6 1.8 2.0 2.2 2.4 2.6

产生

enter image description here