2013-03-01 47 views
1

我有一個現有的ggplot2散點圖,它顯示了一個參數與普通數據庫的結果。然後我想添加兩個額外的點到這個圖,我將作爲命令行參數傳遞給我的腳本script age value1 value2。我想在每個點上面用r和l geom_text顯示這些點爲紅色。我有以下的代碼,到目前爲止,但不知道如何添加臨門一腳將數據點添加到現有的散點圖

pkgLoad <- function(x) 
    { 
    if (!require(x,character.only = TRUE)) 
    { 
     install.packages(x,dep=TRUE, repos='http://star-www.st-andrews.ac.uk/cran/') 
     if(!require(x,character.only = TRUE)) stop("Package not found") 
    } 

    } 

pkgLoad("ggplot2") 
#load current normals database 
df<-data.frame(read.csv("dat_normals.txt", sep='\t', header=T)) 

args<-commandArgs(TRUE) 

#specify what each argument is 
age <- args[1] 
rSBR <- args[2] 
lSBR <- args[3] 

# RUN REGRESSION AND APPEND PREDICTION INTERVALS 
lm_fit = lm(SBR ~ Age, data = df) 
sbr_with_pred = data.frame(df, predict(lm_fit, interval='prediction')) 




p <- ggplot(sbr_with_pred, aes(x=Age, y=SBR)) + 
      geom_point(shape=19, alpha=1/4) + 
      geom_smooth(method = 'lm', aes(fill = 'confidence'), alpha = 0.5) + 
      geom_ribbon(aes(y = fit, ymin = lwr, ymax = upr, 
         fill = 'prediction'), alpha = 0.2) + 
      scale_fill_manual('Interval', values = c('green', 'blue')) + 
      theme_bw() + 
      theme(legend.position = "none") 


ggsave(filename=paste("/home/data/wolf/FV_DAT/dat_results.png",sep="")) 
browseURL(paste("/home/data/wolf/FV_DAT/dat_results.png",sep"")) 

從本質上講,我想看看2個新的點落在95%的置信區間內,從正常的數據庫(藍帶) enter image description here

+0

爲什麼所有這些細節?請你能更簡潔一些。我錯過了一些東西,但是你想添加一個新的圖層和新的data.frame? – agstudy 2013-03-01 13:28:10

+0

我想添加2個新的數據點,並將這些結果與正常的數據庫進行比較。這些點是否落在95%的置信區間內(即正常範圍) – moadeep 2013-03-01 14:14:48

+2

我認爲你只是做'p + geom_point(data = newdata,color =「red」)'其中'newdata'是一個格式相同的數據框(即匹配列名稱)作爲原始數據集。請注意,你目前的例子是不可重現的...... http://tinyurl.com/reproducible-000 – 2013-03-01 14:27:49

回答

1

您的示例不可重現。創建數據和可重複的示例非常有建設性。這不是浪費時間。對於解決方案,我寫了評論中所說的內容。用新數據添加一個新圖層。

newdata <- data.frame(Age = args[1], 
         SBR = c(args[2],args[3])) 
    p + geom_point(data=newdata,colour="red",size=10) 

例如:

sbr_with_pred < - data.frame(年齡=樣品(15:36,50,代表= T), SBR = RNORM(50))

p <- ggplot(sbr_with_pred, aes(x=Age, y=SBR)) + 
    geom_point(shape=19, alpha=1/4) + 
    geom_smooth(method = 'lm', aes(fill = 'confidence'), alpha = 0.5) 

    args <- c(20,rnorm(1),rnorm(2)) 
    newdata <- data.frame(Age = args[1], 
         SBR = c(args[2],args[3])) 
    p + geom_point(data=newdata,colour="red",size=10) 

enter image description here

+0

對不起,我不明白。數據不可重現的是什麼意思? sbr_with_pred data_frame由以前的測量結果而非隨機樣本構成。藍色帶應該包含95%的數據點和麪積。 – moadeep 2013-03-01 15:16:41

+0

編輯:通過正常 - 我的意思是這些結果是從沒有我們正在調查的診斷的患者測量的 – moadeep 2013-03-01 15:17:49

+0

它不是在sens中重現的,我不能在我的機器中重現您的情節。即使它們是測量數據,您也可以對它們進行採樣並給出一個可重複的示例。有關更多詳細信息,請參閱[this](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)。 – agstudy 2013-03-01 15:46:09

相關問題