Ich habe versucht, mit ggplot2 mehrere Grid Plots zu erzeugen. So würde Ich mag an Verteilerstück mit zusätzlichen boxplot unterhalb der x-Achse und dass für verschiedene Gruppen und Variablen wie das generieren:ggplot2 - Skalierung mehrerer Plots
Code: Ich habe versucht, das zu tun, mit dem folgenden Code:
library(ggplot2)
require(grid)
x=rbind(data.frame(D1=rnorm(1000),Name="titi",ID=c(1:1000)),
data.frame(D1=rnorm(1000)+1,Name="toto",ID=c(1:1000)))
space=1
suite=1
p1=ggplot(x, aes(x=D1, color=Name, fill=Name)) +
geom_histogram(aes(y=..density..),alpha=0.35,color=adjustcolor("white",0),position="identity",binwidth = 0.05)+
geom_density(alpha=.2,size=1)+
theme_minimal()+
labs(x=NULL,y="Density")+
theme(legend.position = "top",
legend.title = element_blank())+
scale_fill_manual(values=c("gray30","royalblue1"))+
scale_color_manual(values=c("gray30","royalblue1"))
p2=ggplot(x, aes(x=factor(Name), y=D1,fill=factor(Name),color=factor(Name)))+
geom_boxplot(alpha=0.2)+
theme_minimal()+
coord_flip()+
labs(x=NULL,y=NULL)+
theme(legend.position = "none",
axis.text.y = element_blank(),
axis.text.x = element_blank(),
panel.grid.minor.x = element_blank(),
panel.grid.major.x = element_blank(),
panel.grid.minor.y = element_blank(),
panel.grid.major.y = element_blank())+
scale_fill_manual(values=c("gray30","royalblue1"))+
scale_color_manual(values=c("gray30","royalblue1"))
grid.newpage()
pushViewport(viewport(layout=grid.layout(5,1)))
define_region <- function(row, col){
viewport(layout.pos.row = row, layout.pos.col = col)
}
print(p1, vp=define_region(1:4,1))
print(p2, vp=define_region(5,1))
ERGEBNIS:
FRAGE: Während meiner Suche beobachtete ich, dass die Skala zwischen Dichteverteilung Plot und Boxplot nicht die gleichen sind (Problem 1). Ich habe keine Lösung gefunden, um diese beiden Graphen im Raster darzustellen (ich bin verloren).
@Henrik Vielen Dank für Ihre Wahl. Ich habe diese Lösung bereits getestet, bin aber nicht sicher. –
fügen Sie die Zeile 'p2 <-p2 + theme (plot.margin = Einheit (c (0,0.3,0,1.5)," cm "))" wird in eine Prise arbeiten. Feinabstimmung für die Boxplot-Ränder kann mit dieser Lösung erforderlich sein. Vielleicht, wenn jemand eine Möglichkeit finden kann, beide zu setzen oder die 'p1'-Ränder zu verwenden und sie' p2' anzuwenden. – N8TRO