2015-01-30 5 views
21

Mi piacerebbe avere il titolo principale e il titolo dell'asse avere le stesse dimensioni del carattere del testo annotato nella trama.ggplot2, modifica la dimensione del titolo

ho usato theme_get() e ho trovato che la dimensione del testo è 12, quindi l'ho fatto nella mia dichiarazione tema - questo non ha funzionato. Ho anche provato a inviare la dimensione relativa a 1, e questo non ha funzionato

enter image description here Speravo che qualcuno potesse aiutarmi per favore.

codice è al di sotto

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 era più veloce di me, quindi mi aggiungere la mia risposta come un commento. Penso che tu debba usare il parametro 'plot.title' invece di solo' title' nella tua chiamata 'theme()'. Se vuoi cambiare il tipo di carattere, puoi farlo tramite il parametro 'family' (potrebbe non funzionare su tutte le piattaforme, però). –

risposta

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

Qui è la serie completa di cose che si può cambiare in element_text:

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