1

各メイン ファセットに一意に注釈を付ける方法を教えてください。ただし、対応するマージン ファセットには注釈を付けません。次のコードは、テキストをメイン ファセットに希望どおりに配置しますが、余白にはテキストが重ねて表示されます。マージン ファセットのテキストを非表示にするにはどうすればよいですか?

frame_labels <- data.frame(
  frame = LETTERS[1:4],
  vs = rep(0:1, each = 2),
  am = rep(0:1, times = 2),
  x = 5, y = 33)

p <- ggplot(mtcars, aes(x = wt, y = mpg)) + geom_point()
p <- p + facet_grid(vs ~ am, margin = TRUE, as.table = FALSE)
p <- p + geom_text(data = frame_labels, aes(x = x, y = y, label = frame))
print(p)
4

2 に答える 2

0

geom_text(...) 部分を削除するだけです。

目的の出力を得るには、コードは次のようになります。

library(ggplot2)

frame_labels <- data.frame(
frame = LETTERS[1:4],
vs = rep(0:1, each = 2),
am = rep(0:1, times = 2),
x = 5, y = 33)

p <- ggplot(mtcars, aes(x = wt, y = mpg)) + geom_point()
p <- p + facet_grid(vs ~ am, margin = TRUE, as.table = FALSE)
print(p)

お役に立てれば。

于 2013-10-16T21:00:37.720 に答える
0

コメントで言及したスレッドに対する私の見解は、本質的に「マージン」をデータセットに入れる必要があるということでした。これを行うためのエレガントな方法があると確信していますが、現時点ではそれが私を逃れています。これは、機能しているように見えるが、きれいではない「力ずく」の方法です。

基本的に、データセットの追加のコピーを 3 つ作成し、3 番目のレベルを追加しvsam余白を組み込みます。それから私はrbindすべて一緒です。最初はうまくいかないと思っていましたが、レベルの順序を変更しvsて、逆の順序が例の順序と一致するようにする必要があることに気付きました。次に、データセットframe_labelsはラベルを追加する魅力のように機能します。

mtcars2 = mtcars3 = mtcars4 = mtcars
mtcars2$vs = mtcars3$am = mtcars4$am = mtcars4$vs = "all"
mtcarsall = rbind(mtcars, mtcars2, mtcars3, mtcars4)

mtcarsall$vs = factor(mtcarsall$vs, levels = c("all", "0", "1"))

ggplot(mtcarsall, aes(x = wt, y = mpg)) + geom_point() + 
    facet_grid(vs ~ am, as.table = FALSE)+
    geom_text(data = frame_labels, position = NULL, aes(x = x, y = y, label = frame))
于 2013-10-16T20:52:58.723 に答える