2015-01-30 3 views
21

Ich möchte meinen Haupttitel und Achsentitel haben die gleiche Schriftgröße wie der annotierte Text in meinem Plot.ggplot2, ändere Titelgröße

Ich habe theme_get() verwendet und festgestellt, dass die Textgröße 12 ist, also habe ich das in meiner Theme-Anweisung getan - das hat nicht funktioniert. Ich habe auch versucht, die relative Größe auf 1 zu senden, und das hat nicht funktioniert

enter image description here Ich hatte gehofft, jemand könnte bitte mir helfen.

-Code ist unter

library(ggplot2) 
library(gridExtra) #to set up plot grid 
library(stringr) #string formatting functions 
library(plyr) #rbind.fill function 
library(reshape2) #transformation of tables 

dat<-data.frame(
est=c(2.75,2.95,2.86,2.99), 
ucl=c(2.92,3.23,3.38,4.91), 
lcl=c(2.24,1.67,2.44,1.82), 
ord=c(1,2,1,2) 
) 
dat$varname<-c('Estimate','Predictive','Estimate','Predictive') 
dat$grp<-c('Cobalt','Cobalt','Chromium','Chromium') 

for (i in unique(dat$grp)) { 
    dat <- rbind.fill(dat, data.frame(grp = i, ord=0, 
            stringsAsFactors = F)) 
} 

dat$grp_combo <- factor(paste(dat$grp, dat$ord, sep = ", ")) 
dat$grpN <- as.numeric(dat$grp_combo) 



rng <- c(0,6) 
scale.rng <-1 


xstart=-(max(dat$grpN)+2) 
xend=4 


ThemeMain<-theme(legend.position = "none", plot.margin = unit(c(0,0,0, 0), "npc"), 
       panel.margin = unit(c(0,0, 0, 0), "npc"), 
       title =element_text(size=12, face='bold'), 
       axis.text.y = element_blank(), 
       axis.text.x = element_text(color='black'), 
       axis.ticks.y = element_blank(), 
       axis.title.x = element_text(size=12,color='black',face='bold') 
       ) 
BlankSettings <- theme(legend.position = "none", 
         title =element_text(size=12, face='bold'), 
         plot.margin = unit(c(0,0, 0, 0), "npc"), 
         panel.margin = unit(c(0,0, 0, 0), "npc"),    
         axis.text.x = element_text(color='white'),        
         axis.text.y = element_blank(), 
         axis.ticks.x = element_line(color = "white"), 
         axis.ticks.y=element_blank(), 
         axis.title.x = element_text(size=12,color='white',face='bold'), 
         panel.grid = element_blank(),panel.grid.major = element_blank(),panel.background = element_blank() 
         ) 

pd <- position_dodge(width = 0.7) 

####################################################################################################### 
#MAIN PLOT 
####################################################################################################### 
mainPart<- 
    ggplot(dat, aes(x=-grpN,y=est, ymin=lcl, ymax=ucl, group=1)) + 
    scale_y_continuous(name=NULL, breaks=seq(rng[1], rng[2], scale.rng), limits=c(rng[1], rng[2]), expand=c(0,0)) + 
    ylab('Ion Concentration') + 
    ggtitle('Mean with 95% HDI')+ 
    #geom_segment(aes(x=xstart, xend=0, y=0, yend=0), linetype=3, alpha=0.01) + 
    geom_linerange(aes(linetype="1"),position=pd) + 
    geom_point(aes(shape="1"), fill="white",position=pd) + 
    coord_flip() + 
    scale_x_continuous(limits=c(xstart,xend), expand=c(0,0))+xlab(NULL)+ 
    ThemeMain 

####################################################################################################### 
#varnameS 
####################################################################################################### 
# ystart & yend are arbitrary. [0, 1] is 
# convinient for setting relative coordinates of 
# columns 
ystart = 0 
yend = 1 
p1 <- 
    ggplot(dat, aes(x = -varnameN, y = 0)) + 
    coord_flip() + 
    scale_y_continuous(limits = c(ystart, yend)) + 
    BlankSettings+ 
    scale_x_continuous(limits = c(xstart, xend), expand = c(0, 0)) + 
    xlab(NULL) + 
    ylab('') + 
    ggtitle('') 

studyList<- 
    p1 + 
    with(unique(dat[is.na(dat$varname),c("grpN","grp")]), annotate("text",label=grp, x=-grpN,y=0, fontface='bold', hjust=0)) + #Variable Group varnames 
    with(dat[!is.na(dat$var),],annotate("text",label=varname,x=-grpN,y=0.04, hjust=0)) #Variables 

####################################################################################################### 
#EFFECTS 
####################################################################################################### 
f<-function(x) round(x,2) 
dat$msmt<-paste(f(dat$est),' [',f(dat$lcl),', ',f(dat$ucl),']',sep='') 


effectSizes<-p1+ 
    annotate("text",x=-dat$grpN, y=0.25,label=ifelse(is.na(dat$varname)==T,'',dat$msmt)) 



grid.arrange(ggplotGrob(studyList), ggplotGrob(mainPart), 
      ggplotGrob(effectSizes), ncol = 3, widths = unit(c(0.19, 
                   0.4, 0.41), "npc")) 
+0

@TrynnaDoStat schneller war als ich, also werde ich meine Antwort hinzufügen, ein Kommentar. Ich denke, dass Sie 'plot.title' Parameter anstelle von' title' in Ihrem 'theme()' Aufruf verwenden müssen. Wenn Sie die Schriftart ändern möchten, können Sie dies über den 'family' Parameter tun (funktioniert möglicherweise nicht auf allen Plattformen). –

Antwort

41
+ theme(plot.title = element_text(size=22)) 

Hier wird die ganze Reihe von Dingen, die Sie in element_text ändern können:

element_text(family = NULL, face = NULL, colour = NULL, size = NULL, 
    hjust = NULL, vjust = NULL, angle = NULL, lineheight = NULL, 
    color = NULL)