2016-05-19 9 views
2

Ich habe gerade ein Gitter mit Paket cowplot gebaut (um die Plots von A-D zu beschriften). Die Grundstücke sind mit dem Paket gemacht ggplot2:Eine gemeinsame Legende für ein Cowplot-Gitter in R

pfour<-ggplot(four, aes(x=Concentration, y=Percentage, fill=Phenotype)) + 
geom_bar(stat='identity',color='black') + 
scale_fill_grey(start = .4, end = .9) + 
theme_bw()+ylab("Distribution") + 
xlab("Contentration [mg/ml]") + 
ggtitle("96 hpf") + 
theme(legend.title = element_text(colour="black", size=10, face="bold")) + 
theme(legend.background = element_rect(fill="white", 
             size=0.5, linetype="solid", 
             colour ="black")) + 
scale_x_discrete(limits=c('uninjected','control','0.002', '0.02', '0.2'), 
        labels=c('uninjected\n(n=251)', 
          'control\n(n=248)', 
          '0.002\n(n=205)', 
          '0.02\n(n=222)', 
          '0.2\n(n=203)')) 

die Daten sieht so aus (4 verschiedene Tabellen mit leicht unterschiedlichen Prozent aber das gleiche Prinzip):

Concentration,Percentage,Phenotype 
uninjected,0.996015936,0 
uninjected,0,1 
uninjected,0.003984064,2 
uninjected,0,3 
uninjected,0,4 
control,0.995967742,0 
control,0.004032258,1 
control,0,2 
control,0,3 
control,0,4 
0.002,0.985365854,0 
0.002,0.004878049,1 
0.002,0.004878049,2 
0.002,0,3 
0.002,0.004878049,4 
0.02,0.981981982,0 
0.02,0.004504505,1 
0.02,0.004504505,2 
0.02,0.004504505,3 
0.02,0.004504505,4 
0.2,0.985221675,0 
0.2,0.004926108,1 
0.2,0,2 

und es sieht so aus:

plot

der Code für das heißt:

Jetzt frage ich mich, ob es möglich ist, eine einzige gemeinsame Legende für alle vier Plots zu bekommen, da es eine Menge von plotspace stiehlt, um es 4 mal zu haben. Ich schätze jede Hilfe.

+0

gerade bearbeitet. ggplot2 für die Graphen und Cowplot für das Gitter –

+0

Sie sollten klären, ob zwei Legenden am Ende jeder Spalte zufriedenstellend sind oder ob es sich um eine einzelne Legende handelt. Sie sollten auch einige Daten veröffentlichen. –

Antwort

3

Dort zeigt is a vignette, wie dies zu tun ist.

Der Ansatz besteht darin, Ihre Plots mit der Legende versteckt theme(legend.position="none") zu erstellen. Dann extrahieren Sie die Legende grob aus einem dieser Objekte.

grobs <- ggplotGrob(pfour)$grobs 
legend <- grobs[[which(sapply(grobs, function(x) x$name) == "guide-box")]] 

Dann plotten Sie die Legende als eine separate "Handlung". Um die Legende auf der rechten Seite haben Sie möglicherweise:

+1

Beachten Sie, dass es jetzt eine 'get_legend (p) 'Funktion in' cowplot' gibt (aufgelistet in der Vignette, die Sie verlinken). –

Verwandte Themen