2017-06-27 12 views
0

に最小値と最大値を追加するにはどうすればよい私は同時に与えられたデータの平均値、最小値、最大値及び95%信頼区間(CI)をプロットしたいと思います:私は平均プロット(sciplot)

duration <- sample(1:100, 12, replace=F)

locality <- c(rep("loc1", 6), rep("loc2", 6)) 

data <- data.frame(locality, duration) 

は、私はすでにそれらを個別にプロットするために管理してきましたが、エラーバーは95%CIを表すように、これらの情報をブレンドする方法を見つけ出すことができなかった、と最小値と最大値は、以下の点として表示され、エラーバーの上に表示されます。

plot using 95% confidence intervals

library(sciplot) 
lineplot.CI(data$locality, data$duration, type="p", 
     ci.fun= function(x) c(mean(x, na.rm=T)-qt(0.975, nrow(data)-2)*se(x, na.rm=T), 
           mean(x, na.rm=T)+qt(0.975, nrow(data)-2)*se(x, na.rm=T))) 

plot using min and max values

lineplot.CI(data$locality, data$duration, type="p", 
     ci.fun= function(x) c(mean(x, na.rm = TRUE)-min(x, na.rm = TRUE), 
           mean(x, na.rm = TRUE)+max(x, na.rm = TRUE))) 

私はRの助けに見て、インターネット上で可能な解決策を探し、それを行う方法を見つけ出すことができませんでしたしました。

+1

をデータセットを追加し、コードを変更します。私はそれを確認するために、コードの中に潜っていないものの、プロットのxの値は、ちょうどdata$localityのために、おそらく因子の値から派生した整数を、昇順されていますあなたが持っている問題を説明する。 –

+0

私はコードを編集し、ランダムなデータセットを追加してそれをよりよく説明しました –

+0

私はlineplot.CIのコードを見ていましたが、私が見ることができる限りすべてのベースグラフィックスなので、 'min'sと' max'sを追加するための 'points'呼び出しです。 –

答えて

0

これは私のコメントで概説したアプローチです。

png();res <- 
lineplot.CI(data$locality, data$duration, type="p", 
     ci.fun= function(x) c(mean(x, na.rm=T)-qt(0.975, nrow(data)-2)*se(x, na.rm=T), 
           mean(x, na.rm=T)+qt(0.975, nrow(data)-2)*se(x, na.rm=T)) , ylim= c(min(data$duration), max(data$duration))) 
points(rep(1,2) , c(min(data$duration[ data$locality=="loc1"]), 
         max(data$duration[data$locality=="loc1"]))) 
points(rep(2,2) , c(min(data$duration[ data$locality=="loc2"]), 
         max(data$duration[data$locality=="loc2"]))) 
dev.off() 

enter image description here

+0

それはトリックでした!私は実際のデータを使ってグラフを作成することができました。乾杯! しかし、私は巨大なスクリプトで終わった。どのようにlineplot.ci関数内に埋め込むことができるかについての考えはありますか? –

+0

最初のlineplot.CI呼び出しの後に、xのラベルをループすることができます。許容範囲内でコードフットプリントを小さくすることはできますか? (自動注釈のオプションを持つ新しい関数をハックすることはもちろん可能ですが、それは別の質問かもしれません)。 –