この質問に対する答えがうまくいきません。私とそのユーザーの両方が望んでいるのは、facet_grid() を使用するときにすべての列に軸の目盛りとラベルを追加することです。
再現可能な例とソリューションを実行すると (abc=as.data.frame(abc) を追加して初期エラーを修正した後)、エラー メッセージが表示されます。
gtable_add_grob(g, grobs = list(segmentsGrob(1, 0, 1, 1), segmentGrob(1, ) のエラー: すべての入力の長さが 1 ではないか、「grobs」と同じ長さではありません
元の例はえーと、少し奇妙なので、私は自分の再現可能な例を作成しました:-)。同じエラーメッセージが表示されます
require(ggplot2)
require(reshape)
require(grid)
require(gtable)
data(iris)
iris$category=rep(letters[1:4],length.out=150)
plot1=ggplot(data=iris,aes(x=1,y=Sepal.Width))+geom_boxplot()+facet_grid(Species~category)
答えは次のようになります。
g <- ggplotGrob(plot1)
require(gtable)
axis <- gtable_filter(g, "axis-l")[["grobs"]][[1]][["children"]][["axis"]][,2]
segment <- segmentsGrob(1,0,1,1)
panels <- subset(g$layout, name == "panel")
g <- gtable_add_grob(g, grobs=list(axis, axis), name="ticks",
t = unique(panels$t), l=tail(panels$l, -1)-1)
g <- gtable_add_grob(g, grobs=list(segmentsGrob(1,0,1,1),
segmentsGrob(1,0,1,1)),
t = unique(panels$t), l=tail(panels$l, -1)-1,
name="segments")