2011-09-30 52 views
1

我試圖繪製幾套在同一地塊有序對,使用R.我不需要它們之間的線,因爲這已經照顧通過簡單的線性迴歸。下面是一些示例代碼:R中圖形上的繪製多組不同的數據點的

sw_sd <- c(0, 20) 
sw_r <- c(5, 10) 
aa_sd <- c(0, 16) 
aa_r <- c(5, 8) 
png("5-airline-cals.png") 
plot.new() 
plot.window(xlim=c(0,25), ylim=c(0,12)) 
plot(c(aa_sd, aa_r)) 
plot(sw_sd,sw_r, pch=22, main="Capital Allocation Lines", xlab="Standard Deviation", ylab="Expected Return") 
sw_cal=lm(sw_r~sw_sd) 
aa_cal=lm(aa_r~aa_sd) 
abline(sw_cal, col="forestgreen", lwd=3) 
abline(aa_cal, col="blue", lwd=3) 
legend(1, 9, c("Southwest Airlines","American Airlines"), cex=0.8, col=c("forestgreen","blue"), lwd=3); 
box() 
dev.off() 

sd雙是x座標,r是y座標。我需要同一散點圖上的兩組x-y對。這是簡化的數據,但你明白了。

+2

請參閱'?points','?lines'和從您的代碼閱讀''plot'的外觀,並特別注意示例並不是一個壞主意。 – joran

+0

感謝您的提示;我一直在尋找'lines'和'plot'的文檔,但是我仍然不確定你在想什麼。我應該使用'lines'而不是'abline'嗎?我最初使用了'lines',但是我需要這些線來擴展點,而不僅僅是連接它們(因爲點代表了一段時間內的連續函數)。你能否提供一些關於特別*我應該改進的地方的更多細節?由於我是R新手,這肯定會有所幫助。 –

回答

5

對不起,我駕車經過RTFM評論。這裏有更多的細節。

使用基本圖形,我將完成您通過什麼做什麼這樣的:

plot(c(sw_sd,aa_sd),c(sw_r,aa_r), pch = 22, 
     col = rep(c('forestgreen','blue'),each = 2),main="Capital Allocation Lines", 
     xlab="Standard Deviation", ylab="Expected Return") 
abline(lm(sw_r~sw_sd),col = 'forestgreen',lwd = 3) 
abline(lm(aa_r~aa_sd),col = 'blue',lwd = 3) 

我提到pointslines是因爲你是問如何繪製在同一個多組點的原因圖形。在R基本圖形的一般策略是你初始化到plot一個呼叫的情節,然後你使用像pointslinesabline

您的通話添加給它plot.newplot.window不真的有必要;如果你剛剛開始使用R,你可能真的不需要使用它們一段時間。

一般情況下,每次調用plot時,R將開始一個新的繪圖設備。因此,您重複撥打plot只需返回並重新開始。你會發現,你得到的陰謀沒有最終不得不那是因爲每次叫plot時間重新你從頭開始了,好像以前的命令從來沒有發生過的0〜12 y軸的限制。這也是爲什麼另一組點沒有出現。

最後,推薦閱讀?plot有點讓人誤解,因爲真正的?plot.default對初學者來說有點更多信息。它有一些小塊,比如能夠直接傳遞x軸和y軸的限制,通過type = "n"創建一個空的圖,並且可以添加正確的尺寸,等等。

+0

感謝您的幫助;這真的簡化了我想要做的事情,並給了我一個很好的學習提升。 –

3

快速ggplot基於答案:

dat <- data.frame(sd=c(0,20,0,16), 
        r=c(5,10,5,8), 
        airline=rep(c("Southwest","American"),each=2)) 

library(ggplot2) 
theme_update(theme_bw()) 
qplot(sd,r,data=dat,colour=airline)+geom_smooth(method="lm")+ 
    labs(x="Standard Deviation",y="Expected Return")+ 
    scale_colour_manual(value=c("forestgreen","blue")) 
2

使用Ben的數據框但是與lattice:

library(lattice) 
xyplot(r~sd, data=dat, groups=airline, 
    type=c('p', 'r'), 
    auto.key=list(space='right'), 
    main="Capital Allocation Lines", 
    xlab="Standard Deviation", ylab="Expected Return") 

你會發現在?panel.xyplot?xyplot的詳細信息。

相關問題