ファセットの2つのセットでグラフを生成するための最小限のコードを次に示します。ファセットの全体的なラベル
library("ggplot2", quietly = TRUE, warn.conflicts = FALSE)
library("RColorBrewer", quietly = TRUE, warn.conflicts = FALSE)
val.a <- rnorm(10)
val.b <- rnorm(10)
val.c <- c("A","B","A","A","B","B","B","B","A","B")
val.d <- c("D","D","E","D","E","E","E","D","D","E")
val.e <- rnorm(10)
maya <- data.frame(val.a,val.b,val.c,val.d,val.e)
ggplot(maya, aes(x=val.a, y=val.b)) +
geom_point(shape=20,size=3, aes(colour=val.e)) +
facet_grid(val.c~val.d) +
xlab("Leonardo") + ylab("Michaelangelo") +
scale_colour_gradientn(colours=brewer.pal(9,"YlGnBu"), name="Splinter")
私は名前ドナテッロとラファエルは、上部と右側の軸上にあるように、全体的なファセットラベルを追加する方法を見つけ出すことはできません。
似たような解決策を見ましたが、コードの頭や尾を作ることはできません。私の謎に答えてほしいですか?
Similar questionここでは、私は2つ以上のファセットを持っていれば失敗します。ラベルはグラフのどこかに表示されます。一般的なケースでこの作業を行う方法はありますか?
私は上記のリンクでrawrのソリューションを試しましたが、それは複数の列の同じ場所で終了しました。以下は、rawrのソリューションに更新されたコードですが、予期せずにラベルを生成しています(解決策を理解していないため私のために)。
library("ggplot2", quietly = TRUE, warn.conflicts = FALSE)
library("RColorBrewer", quietly = TRUE, warn.conflicts = FALSE)
val.a <- rnorm(20)
val.b <- rnorm(20)
val.c <- c("A","B","C","D","E","F","G","H","I","J")
val.d <- c("A","B","C","D","E","F","G","H","I","J")
val.e <- rnorm(20)
maya <- data.frame(val.a,val.b,val.c,val.d,val.e)
p <- ggplot(maya, aes(x=val.a, y=val.b)) + geom_point(shape=20,size=3, aes(colour=val.e)) + facet_grid(val.c~val.d) + xlab("Leonardo") + ylab("Michaelangelo") + scale_colour_gradientn(colours=brewer.pal(9,"YlGnBu"), name="Splinter")
z <- ggplotGrob(p)
library(grid)
library(gtable)
# add label for right strip
z <- gtable_add_cols(z, unit(z$width[[7]], 'cm'), 7)
z <- gtable_add_grob(z,
list(rectGrob(gp = gpar(col = NA, fill = gray(0.5))),
textGrob("Variable 1", rot = -90, gp = gpar(col = gray(1)))),
4, 8, 6, name = paste(runif(2)))
# add label for top strip
z <- gtable_add_rows(z, unit(z$heights[[3]], 'cm'), 2)
z <- gtable_add_grob(z,
list(rectGrob(gp = gpar(col = NA, fill = gray(0.5))),
textGrob("Variable 2", gp = gpar(col = gray(1)))),
3, 4, 3, 6, name = paste(runif(2)))
# add margins
z <- gtable_add_cols(z, unit(1/8, "line"), 7)
z <- gtable_add_rows(z, unit(1/8, "line"), 3)
# draw it
grid.newpage()
grid.draw(z)
誰かが親切に私には、一般的なファセットラベルがどうあるべきか広い、それを伝えるのコードの一部を指摘するだろうしてください?
あなたはおそらくなら、 'facet_grid(val.c + "ラファエル" 〜 "ドナテッロ" + val.d)'で何かを得ることができますが、単一全体のストリップラベルを取得しますあなたが面取りラベラーの制約を破ることができない限り、四角形を描くことでそれをハックする必要があります。また、 'library(RColorBrewer)'を追加して上記のコードを再現する必要があります。 – alistaire
geom_point(shape = 20、size = 3、aes)は、素早く、汚れている、つまり下層のグリッド構造に触れることなく、 'p < - ggplot(maya、aes(x = val.a、y = val.b))+ (color = val.e))+ facet_grid(val.c〜val.d)+ xlab(NULL)+ ylab(NULL)+ scale_colour_gradientn(colors = brewer.pal(9、 "YlGnBu")、name = "Splinter")+ テーマ(legend.position = "bottom") '、次に' gridExtra :: grid.arrange(p、top = "Michaelangelo"、right = "Leonardo") 'となります。 – lukeA
残念ながら、どちらも私が望んでいるものではありませんが、これらの2つの答えは非常に有用です。 –