2012-09-28 59 views
3

我想繪製一個帶有y軸的散點圖可以自定義爲步長0.2,範圍在0-2.6之間,x軸可以自動定義。我嘗試了下面,但它不起作用。我可以知道我應該如何正確設置參數?如何在R中自定義y軸步長尺寸


# 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() 
+2

您是否意識到'pt.n < - read.table(「p0_n300m20r1c1_regression.txt」,header = T)'會爲每個人拋出一個錯誤,但您呢? –

+0

這條線在R 2.15.0上工作得很好。我已經刪除了我的代碼中不必要的部分。所以它可能看起來很奇怪,但通過使用註釋行#plot(..)正確地繪製圖表,它工作得很好。無論如何。 – twfx

+0

Josh的觀點是他沒有文件'p0_n300m20r1c1_regression.txt' - 我也沒有。所以我們不能運行你的代碼。 – Henry

回答

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正確的元素(最大值是在元),你仍然不會得到正確的答案:

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創建序列0, 1, 2

如果你想在0繪製蜱和標籤 - 2.6 0.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 

舉例說明:

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() 

哪產生

enter image description here

+1

這是我第一個R腳本。調試的技巧已經闡述了超過所給出答案的價值。我非常感激。 :)。 – twfx