2015-01-30 4 views
21

Я хотел бы, чтобы мой главный заголовок и название оси имели тот же размер шрифта, что и аннотированный текст в моем сюжете.ggplot2, change title размер

Я использовал theme_get() и обнаружил, что размер текста равен 12, поэтому я сделал это в своем описании темы - это не сработало. Я также попытался отправить относительный размер до 1, и это не сработало

enter image description here Я надеялся, что кто-то сможет мне помочь.

код ниже

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 был быстрее меня, поэтому я добавлю свой ответ, комментарий. Я думаю, что вам нужно использовать параметр 'plot.title' вместо просто' title' в вашем вызове 'theme()'. Если вы хотите изменить тип шрифта, вы можете сделать это с помощью параметра 'family' (возможно, это не работает на всех платформах). –

ответ

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

Вот полный набор вещей, которые вы можете изменить в element_text:

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