如何在ggplot中控制画布大小?

时间:2015-05-06 20:18:53

标签: r ggplot2

考虑这个简单的ggplot:

enter image description here

我在它上画了一条黑色边缘,所以更容易想象它有多大。

我不明白为什么这个情节如此之大。我的代码中没有任何内容告诉ggplot我想要绘图上方或下方的任何区域。

这似乎每次都让我感到高兴。如何在ggplot中控制画布大小?

library(ggplot2)

hex=c("#CC0000", "#90BD31", "#178CCB")    

q <- ggplot(data=NULL)
    q <- q + geom_rect(data=NULL, aes(xmin=0, xmax=1, ymin=0.5, ymax=1.5), fill=hex[1])
    q <- q + geom_rect(data=NULL, aes(xmin=1.5, xmax=2.5, ymin=0.5, ymax=1.5), fill=hex[2])
    q <- q + geom_rect(data=NULL, aes(xmin=3, xmax=4, ymin=0.5, ymax=1.5), fill=hex[3])
    q <- q + annotate("text", x=.5, y=0.1, label='Impaired', size=4)
    q <- q + annotate("text", x=2, y=0.1, label='Normal', size=4)
    q <- q + annotate("text", x=3.5, y=0.1, label='Optimal', size=4)
    q <- q + coord_fixed()
    q <- q + theme_classic()
    q <- q + theme(axis.line=element_blank(),
                   axis.text.x=element_blank(),
                   axis.text.y=element_blank(),
                   axis.ticks=element_blank(),
                   axis.title.x=element_blank(),
                   axis.title.y=element_blank(),
                   panel.background=element_blank(),
                   panel.border=element_blank(),
                   panel.grid.major=element_blank(),
                   panel.grid.minor=element_blank(),
                   plot.background=element_blank())
    q

1 个答案:

答案 0 :(得分:7)

使用ggplot2 plot.margin and/or panel.margin theme options,一旦充分设置了画布的输出尺寸,就可以控制内部边距。这肯定适用于普通的图形设备,也应该在闪亮的应用程序中工作:

library(ggplot2)
library(grid)

hex=c("#CC0000", "#90BD31", "#178CCB")    

q <- ggplot(data=NULL)
    q <- q + geom_rect(data=NULL, aes(xmin=0, xmax=1, ymin=0.5, ymax=1.5), fill=hex[1])
    q <- q + geom_rect(data=NULL, aes(xmin=1.5, xmax=2.5, ymin=0.5, ymax=1.5), fill=hex[2])
    q <- q + geom_rect(data=NULL, aes(xmin=3, xmax=4, ymin=0.5, ymax=1.5), fill=hex[3])
    q <- q + annotate("text", x=.5, y=0.1, label='Impaired', size=4)
    q <- q + annotate("text", x=2, y=0.1, label='Normal', size=4)
    q <- q + annotate("text", x=3.5, y=0.1, label='Optimal', size=4)
    q <- q + coord_fixed()
    q <- q + theme_classic()
    q <- q + theme(axis.line=element_blank(),
                   axis.text.x=element_blank(),
                   axis.text.y=element_blank(),
                   axis.ticks=element_blank(),
                   axis.title.x=element_blank(),
                   axis.title.y=element_blank(),
                   panel.background=element_blank(),
                   panel.border=element_blank(),
                   panel.grid.major=element_blank(),
                   panel.grid.minor=element_blank(),
                   plot.background=element_blank(),
                   plot.margin=unit(c(0,0,0,0), "cm"),
                   panel.margin=unit(c(0,0,0,0), "cm"))
    q

No margin output