2016-03-22 5 views
0

私は大きなデータフレームを持っています。ここにサンプルデータがあります(最初のいくつかの観察)。中央値をテキストとしてbwplotに追加するにはどうすればよいですか?

Year ComplaintCategory Days Loop 
    FY07-09 Service   1  Short 
    FY07-09 Service   22  Short 
    FY07-09 Product   15  Long 
    FY07-09 Product   6  Long 
    FY07-09 Product   6  Long 
    FY07-09 Service   3  Short 

条件付きボックスプロットに中央値のみを表示したいとします。各ボックスプロットに対応する中央値が計算され、ベクトルCalculatedMedianに格納される。中央値を以下に示す。私はそれぞれのパネルにし、中央の場所で箱ひげ対応のためにのみ中央値を印刷するにはどうすればよい

12.0 26.0 13.5 17.0 20.0 48.0 35.0 21.0 NA NA NA NA 0.0 29.0 30.0 19.0

?以下

bwplot(Days ~ Loop | factor(Year), 
    ProductData, layout = c(8, 1), pch = rep("|", 2), 
    ylim = c(-10,100), scales=list(y = list(at=seq(0, 100,10))), 
    main=list(label="", cex=1.4), 
    ylab=list(label="Settlement Days", cex=1.3), 
    xlab=list(label="Loop", cex=1.3), 
par.settings = list(box.rectangle = list(col= "black",lwd=1.3,lty=1), 
         box.umbrella = list(col= "black",lwd=1.3,lty=1), 
         ylim = seq(0, 100, by=10), 
         plot.symbol = list(col='black')), 
    panel=function(x, y,...) { 
      panel.abline(v = x, h = seq(0, 100, by = 10), 
         col = "lightgrey",lty = 2,lwd=1)    
      panel.bwplot(x, y,fill=c('lemonchiffon1','lavenderblush1'),...) 
      panel.text(x = x, y =CalculatedMedian, labels = CalculatedMedian)} 

コードの出力である:

enter image description here

+2

あなたは 'panel.textにを参照しているオブジェクト(X = xで、Y = CalculatedMedian、ラベル= CalculatedMedian)は'何ですか? xとは何ですか? CalculatedMedianとは何ですか? – InfiniteFlashChess

+0

[私の最近の答え](http://stackoverflow.com/a/35756749/980833)と同様の質問には、役に立つリードがいくつかあります。 –

+0

Tufte-boxplotを配信するリクエストに対する私のエージングレスポンスは、さらにハッキングするための基礎を提供するかもしれません:http://stackoverflow.com/questions/6973394/functions-available-for-tufte-boxplots-in-r/6973803#6973803 –

答えて

0

は、ここではいくつかのテストデータを使用して、最小限の例です。元のデータを含むソリューションが必要な場合は、再現可能な例を提供してください。

ここでは、コールにメジアンのベクトルを作成してから、中央値から取得した座標を使用してプロットします。

dd <- data.frame(
    x = rnorm(100), 
    ind = as.factor(rbinom(100, 3, 1/3)) 
) 

bwplot(x ~ ind, data = dd, md = tapply(dd$x, dd$ind, median), 
     panel = function(x, y, md, ...) { 
     panel.bwplot(x, y, ...) 
     panel.text(x = 1:4, y = md, labels = round(md, 2), pos = 3) 
     }) 

Imgur

関連する問題