1
Also versuche ich ein paar ggplots und ihre Legende mit gridExtra zu zeichnen. Die Legende erscheint in der letzten Zelle auf weißem Hintergrund - ich möchte dort die Hintergrundfarbe ändern, so dass weißer Hintergrund verschwindet. Wie kann ich das machen?Hintergrundfarbe von grid.arrange in gridExtra
Hier ist mein Code:
library(reshape)
library(ggplot2)
library(plyr)
library(wq)
library(gridExtra)
library(lattice)
library(grid)
testVisualization <- function()
{
set.seed(123)
xx <- sample(seq(from = 20, to = 50, by = 5), size = 50, replace = TRUE)
yy <- sample(seq(from = 1, to = 50), size = 50, replace = TRUE)
zz <- sample(seq(from = 1, to = 10, by = 1), size = 50, replace = TRUE)
dd <- data.frame(xx,yy,zz)
colRainbow <- rainbow(n, s = 1, v = 1, start = 0, end = max(1, n - 1)/n, alpha = 1)
gg <- ggplot() + geom_point(data=dd, aes(x=xx, y=yy, colour=zz))+
theme_custom()
lay2 <- rbind(c(1,1,1,1,1),
c(2,2,3,3,4))
legg1 <- g_legend(gg)
grid.arrange(
gg+guides(fill=FALSE, colour=FALSE, size=FALSE),
gg+guides(fill=FALSE, colour=FALSE, size=FALSE),
gg+guides(fill=FALSE, colour=FALSE, size=FALSE),
legg1,
layout_matrix=lay2)
}
theme_custom <- function()
{
theme(
plot.background = element_rect(fill = "#002B36", colour = "#002B36"),
panel.background = element_rect(fill = "#002B36"),
panel.background = element_rect(fill = "#002B36"),
legend.background = element_rect(fill="#002B36", colour = "#002B36"),
legend.margin = unit(c(-4, -4), "cm"),
legend.key = element_rect(fill="#002B36", colour ="#002B36"),
legend.text =element_text(colour = "#DCD427"),
legend.title=element_text(colour = "#DCD427")
)
}
g_legend<-function(a.gplot){
tmp <- ggplot_gtable(ggplot_build(a.gplot))
leg <- which(sapply(tmp$grobs, function(x) x$name) == "guide-box")
legend <- tmp$grobs[[leg]]
#+ legend.margin = unit(-0.5, "cm")
legend
}
Hallo Baptiste, danke für die Antwort. Aber hat das für dich so funktioniert wie es ist? Wenn ich dein Bit zu meinem Code oben hinzufüge, erhalte ich den folgenden Fehler:. Fehler in grid.Call.graphics (L_setviewport, vp, TRUE): INTEGER() kann nur auf eine 'Ganzzahl', nicht eine 'NULL' – petiteparticule
perfekt angewendet werden! es funktionierte für R 3.3.1 (ich hatte auf meinem anderen Computer R 3.2). Danke vielmals! – petiteparticule