我想绘制一个带有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()
答案 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.6
(to
参数),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
产生