9

各バーの上部にある棒グラフ (格子) の各バーの値を配置したいと思います。ただし、これを実現できるオプションが見つかりません。軸のオプションしか見つかりません。

4

4 に答える 4

20

カスタム パネル関数を作成します。

library("lattice")
p <- barchart((1:10)^2~1:10, horiz=FALSE, ylim=c(0,120),
              panel=function(...) { 
                args <- list(...)
                panel.text(args$x, args$y, args$y, pos=3, offset=1)
                panel.barchart(...)
              })
print(p)

ラベル付き格子棒グラフ

于 2010-01-27T14:53:59.420 に答える
0

とにかくこれをしなければならなかったので、これは@Alex Brownが提案する行に沿って理解するのに十分に近いコードサンプルです(スコアはある種の2D配列であり、グループ化されたベクトルに変換されます) :

barchart(scores, horizontal=FALSE, stack=FALSE, 
     xlab='Sample', ylab='Mean Score (max of 9)',
     auto.key=list(rectangles=TRUE, points=FALSE),
     panel=function(x, y, box.ratio, groups, errbars, ...) {
         # We need to specify groups because it's not actually the 4th 
         # parameter
         panel.barchart(x, y, box.ratio, groups=groups, ...)
         x <- as.numeric(x)
         nvals <- nlevels(groups)
         groups <- as.numeric(groups)
         box.width <- box.ratio / (1 + box.ratio)
         for(i in unique(x)) {
             ok <- x == i
             width <- box.width / nvals
             locs <- i + width * (groups[ok] - (nvals + 1)/2)
             panel.arrows(locs, y[ok] + 0.5, scores.ses[,i], ...)
         }
     } )

私はこれをテストしていませんが、重要なビット (パネル関数内の場所などを決定する部分) は機能します。それがわかりにくい部分です。私の場合、実際には panel.arrows を使用してエラーバーを作成していました (恐ろしい!)。しかし、scores.ses は、scores と同じ次元の配列であることを意図しています。

後でこれをクリーンアップしようとしますが、他の誰かが望むなら、私はそれを喜んで行います!

于 2012-06-09T06:48:42.270 に答える
-1

パラメータを使用している場合groups、@rcs のコード内のラベルがすべて重なり合っていることがわかります。これは、panel.text を panel.barchart のように拡張することで修正できます。これは、R を知っていれば簡単です。

ライセンス上の理由から、修正のコードをここに掲載することはできません。申し訳ありません。

于 2010-01-29T10:50:58.687 に答える