3

右側にラベルが付けられた点が重ねられた箱ひげ図を作成したい場合。パッケージから試しgeom_dlてみましdirectlabelsたが、行き詰まります。

library(ggplot2)
library(directlabels)

set.seed(0)
x <- data.frame(label=LETTERS[1:15], 
                x="a",
                y = rnorm(15))
x$xpos <- as.numeric(x$x) + .25

g <- ggplot(x, aes(x=x, y=y)) + 
  geom_boxplot(width=.4) +
  geom_point(col="blue")

メソッド を使用して、オーバーラップ コントロールなしでラベルを配置しlast.pointsます。

g + geom_dl(aes(x=xpos, label=label), method = "last.points") 

ここに画像の説明を入力

メソッドlast.qpを使用してオーバーラップを回避すると失敗します。

g + geom_dl(aes(x=xpos, label=label), method = "last.qp")   # fails

Error in approx(df[, x.var], df[, tiebreak.var], xvals) : 
  need at least two non-NA values to interpolate

別の方法で実行する方法geom_dlや適切な配置を達成する方法はありますか?

アドオン

以下で提案されている@lukeAのようにメソッドlast.bumpupを使用すると、非常にうまく機能します。ただし、一部のラベルはまだ重複しています。これを微調整する方法はありますか?

ここに画像の説明を入力

アドオン 2

問題は、複数のレベルがオンになっている因子を使用する場合にのみ発生すると思いますx

set.seed(0)
x <- data.frame(label=LETTERS[1:24], 
                g1 = c("a"),
                g2 = c("a", "b"),
                y = rnorm(24))
x$g1 <- as.factor(x$g1)
x$g2 <- as.factor(x$g2)
x$xpos1 <- as.numeric(x$g1) + .25
x$xpos2 <- as.numeric(x$g2) + .25

最初のプロットのラベル配置は問題ありません。2 つのレベルを持つ 2 番目の場合、オーバーラップは残ります。

# one group
ggplot(x, aes(x=g1, y=y)) + 
  geom_boxplot(width=.4) +
  geom_point(col="blue") +
  geom_dl(aes(x=xpos1, label=label), method= "last.bumpup")

ここに画像の説明を入力

2 つのレベル

# two groups
ggplot(x, aes(x=g2, y=y)) + 
  geom_boxplot(width=.4) +
  geom_point(col="blue") +
  geom_dl(aes(x=xpos2, label=label), method= "last.bumpup")

ここに画像の説明を入力

4

1 に答える 1

2

と( )last.bumpupを組み合わせたメソッドを使用できます。last.pointsbumpuplast.bumup <- list("last.points","bumpup")

g + geom_dl(aes(x=xpos, label=label), method = "last.bumpup")  

ここに画像の説明を入力

于 2016-04-24T10:10:29.907 に答える