我想绘制一个散点图,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()
Run Code Online (Sandbox Code Playgroud)
如果某些东西不起作用,请检查没有做您想做的事情的每一点,以确保您提供了正确的数据并且没有制造麻烦。如果我们运行与轴相关的代码位
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]
Run Code Online (Sandbox Code Playgroud)
您会立即看到问题:
R> 0.2*0:y_range[1]
[1] 0
Run Code Online (Sandbox Code Playgroud)
你基本上是告诉 R 在 0 处画一个勾号。即使你选择了正确的元素y_range
(最大值在第二个元素中),你仍然不会得到正确的答案:
R> 0.2*0:y_range[2]
[1] 0.0 0.2 0.4
R> 0:y_range[2]
[1] 0 1 2
Run Code Online (Sandbox Code Playgroud)
那是因为:
操作员的工作方式。调用 ofx:y
本质上是调用seq(from = x, to = y, by = 1)
and 因为2.6+1
大于2.6
(to
参数)R 创建了序列0, 1, 2
。
如果要以 0 - 2.6 递增 0.2 绘制刻度和标签,请使用:
ylabel <- seq(0, 2.6, by = 0.2)
axis(2, at = ylabel)
Run Code Online (Sandbox Code Playgroud)
这里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
Run Code Online (Sandbox Code Playgroud)
为了显示:
dat <- data.frame(y = runif(20, min = 0, max = 3),
x = rnorm(20))
plot(y ~ x, data = dat, axes = FALSE)
ylabel <- seq(0, 2.6, by = 0.2)
axis(1)
axis(2, at = ylabel, las = 1)
box()
Run Code Online (Sandbox Code Playgroud)
产生
归档时间: |
|
查看次数: |
16511 次 |
最近记录: |