2017-04-25 70 views
2

我有一個數據幀從.csv,看起來像這樣閱讀:ggplot地塊誤差線,但不是實際的數據點中的R

valley_cw_summary:

"","times","means","sd" 
"1",1,23.7326530612245,0.822951942679513 
"2",10,NA,NA 
"3",11,27.9811602527283,2.18451736644603 
"4",12,NA,NA 
"5",13,28.8594485927628,2.47839597165728 
"6",14,NA,NA 
"7",15,28.5562894887995,2.4613545973872 
"8",16,NA,NA 
"9",17,26.9750287026406,1.87035639782657 
"10",18,NA,NA 
"11",19,25.2288340034463,1.0835585618286 
"12",2,NA,NA 
"13",20,NA,NA 
"14",21,24.5269385410684,0.804365453635496 
"15",22,NA,NA 
"16",23,24.1512923607122,0.806920352501217 
"17",24,NA,NA 
"18",25,24.0809803921569,0.826911680243558 
"19",3,23.5923254472014,0.889646609799541 
"20",4,NA,NA 
"21",5,23.3741488747836,0.932515616519176 
"22",6,NA,NA 
"23",7,23.2863296955773,0.982225553711973 
"24",8,NA,NA 
"25",9,25.4694252873563,1.33025859840695 

我嘗試用下面的繪製該腳本:

ggplot(data=valley_c_w_summary,aes(x = times,y=means))+ 
    theme_classic()+ 
    geom_line(data = valley_c_w_summary,aes(x=times,y=means))+ 
    geom_errorbar(data=valley_c_w_summary,aes(ymin=means-sd,ymax=means+sd))+ 
    labs(x="Time",y="Temperature in canopy May to December") 

這隻繪製了誤差線(以我所知道的中心點爲中心)。我將其與其他此類數據框一起繪製在同一個圖上,並且它們工作正常,但它們沒有任何「NA」,這導致我認爲它們是罪魁禍首。其完整的腳本如下所示:

ggplot(data=ridge_cw_summary,aes(x = times,y=means))+ 
    geom_errorbar(data=ridge_c_w_summary,aes(ymin=means-sd,ymax=means+sd),colour="red")+ 
    geom_line(aes(y=means),colour="red")+ 
    theme_classic()+ 
    geom_line(data = valley_c_w_summary,aes(x=times,y=means))+ 
    geom_errorbar(data=valley_c_w_summary,aes(ymin=means-sd,ymax=means+sd))+ 
    geom_line(data = edge_c_w_summary,aes(x=times,y=means),colour="blue")+ 
    geom_errorbar(data=edge_c_w_summary,aes(ymin=means-sd,ymax=means+sd),colour="blue")+ 
    labs(x="Time",y="Temperature in canopy May to December") 

如何讓ggplot顯示正確的點?

+0

什麼是'valley_c_w_summary'的documenation? –

+0

@ J.Con這是一個複製/粘貼錯誤。我(希望)修復它。 – 5r9n

+0

@ J.Con要直接解決您的問題,valley_c_w_summary是從.csv讀入的數據幀。 – 5r9n

回答

1

Alistaire的評論總結了你的答案,你需要把na.omit放在你的數據框中,你也不需要在每個geoms上調用你的數據,就像下面這樣,我已經複製了你的數據並把它放到一個數據中幀調用vally_c_w_summary

ggplot(data=na.omit(valley_c_w_summary),aes(x = times,y=means))+ 
    geom_errorbar(aes(ymin=means-sd,ymax=means+sd),colour="red")+ 
    geom_line(aes(y=means),colour="blue",size=1)+ 
    theme_classic()+ 
    labs(x="Time",y="Temperature in canopy May to December") 

我從下面的圖,我希望這是你期待什麼:

enter image description here

萬一豪ver,您需要近似NAs,您可以在zoo庫中使用名爲na.approx的函數。

你的代碼將類似下面:

library(zoo) 
library(ggplot2) 
ggplot(data=data.frame(na.approx(valley_c_w_summary)),aes(x = times,y=means))+ 
    geom_errorbar(aes(ymin=means-sd,ymax=means+sd),colour="red")+ 
    geom_line(aes(y=means),colour="blue",size=1)+ 
    theme_classic()+ 
    labs(x="Time",y="Temperature in canopy May to December") 

輸出會有點不同,現在,誤差線也隨之增加。你可以閱讀有關花和NA近似的線性變換使用na.approxhere

enter image description here

相關問題