y轴和框之间以及框之间的间距

时间:2016-03-16 05:31:08

标签: r ggplot2 boxplot

我在制作盒子图时遇到了一些麻烦。

1)如何减少y轴与第一个盒子之间以及两个盒子之间的间距?

2)如何让y轴标题加粗?上标似乎有问题。

3)如何使用我的图例的特定颜色创建指示组的简单方块?

我期待你的回复!

library(ggplot2)
d <- data.frame(IVCe.bin=factor(c(1,1,1,1,1,1,1, 0,0,0,0,0,0,0)),
                eGFR.MDRD=c(90,95,98,94,88,85,100, 80, 60,66,62,69,72,78))

g <- ggplot(data=d, aes(x=IVCe.bin, y=eGFR.MDRD, group=IVCe.bin, fill=IVCe.bin)) +
     stat_boxplot(geom ='errorbar', width=0.1, lwd=1) +
     geom_boxplot(lwd=1, width=0.25) +
     theme_bw() +

     theme(legend.position="top") + 
     theme( panel.grid.major = element_blank() ) +
     theme( panel.grid.minor = element_blank() ) +
     theme( panel.border = element_blank()) +
     theme(axis.text.x=element_blank(), axis.ticks.x = element_blank(), axis.line.x = element_blank(), axis.title.x=element_blank()) +

     ylab(~"eGFR [ml/min/1.73m"^2) +
     theme(axis.ticks.y = element_line(color='black', size=1)) +
     theme(axis.line.y = element_line(color='black', size=1)) +
     theme(axis.text.y=element_text(size=15)) +
     theme(axis.title.y=element_text(size=15, hjust=0.5, vjust=10, face="bold")) +

     theme(axis.ticks.length = unit(.25, "cm")) # Länge der Ticks
print(g)

(g <- g + scale_fill_discrete(breaks=c(0, 1), labels=c("Control", "Intervention")))
(g <- g + labs(fill="")) # Keine Legendentitel
(g <- g + theme(legend.text = element_text(colour="black", size = 15, face = "plain")))
(g <- g + theme(legend.key = element_blank()))

1 个答案:

答案 0 :(得分:4)

  1. 我认为你不能。但是,您可以增加框的宽度(例如width=1),然后在保存时减小绘图的宽度,这将产生相同的效果。

  2. bquote(bold())中使用ylab(顺便说一下。我认为你错过了一次)

  3. guides()override.aes()

  4. 一起使用

    所以这里是代码:

    g <- ggplot(data=d, aes(x=IVCe.bin, y=eGFR.MDRD, group=IVCe.bin, fill=IVCe.bin)) +
      stat_boxplot(geom ='errorbar', width=0.1, lwd=1) +
      geom_boxplot(lwd=1, width=1) +    # change width of boxes (1)
      theme_bw() +
      theme(legend.position="top") + 
      theme( panel.grid.major = element_blank() ) +
      theme( panel.grid.minor = element_blank() ) +
      theme( panel.border = element_blank()) +
      theme(axis.text.x=element_blank(), axis.ticks.x = element_blank(), axis.line.x = element_blank(), axis.title.x=element_blank()) +
    
      ylab(bquote(bold(~"eGFR [ml/min/1.73m"^2))) +    # turn axis title bold (2)
      theme(axis.ticks.y = element_line(color='black', size=1)) +
      theme(axis.line.y = element_line(color='black', size=1)) +
      theme(axis.text.y=element_text(size=15)) +
      theme(axis.title.y=element_text(size=15, hjust=0.5, vjust=10)) +
    
      theme(axis.ticks.length = unit(.25, "cm")) # Länge der Ticks
    print(g)
    
    (g <- g + scale_fill_discrete(breaks=c(0, 1), labels=c("Control", "Intervention")))
    (g <- g + labs(fill="")) # Keine Legendentitel
    (g <- g + theme(legend.text = element_text(colour="black", size = 15, face = "plain")))
    (g <- g + theme(legend.key = element_blank()))
    
    g + guides(fill=guide_legend(override.aes=list(colour=c(NA,NA), 
                                                   shape=c(NA,NA))))  # change legend key symbol (3)
    

    enter image description here

    顺便说一句。我认为人们更喜欢你不会在一个问题中提出几个问题。