如何删除ggplot2图表中的边距

时间:2016-11-03 17:12:05

标签: r pdf ggplot2 visualization

我目前正在使用ggplot2为乳胶文档创建图,并发现ggplot2添加了许多不需要的边距:

enter image description here

  • plot.background=element_rect(fill="red")涂成红色:
    • 左边的小边距
    • 图片和图例之间的小幅度
  • 用photoshop涂紫罗兰:
    • 左边和右边的边距
    • 底部1px边距

要删除这些边距还需要哪些规则?谷歌所有这些配置选项真的很难。这是我的实际图表:

library(ggplot2)
library(scales)
label <- c("A", "B", "C", "D")
value <- c(61, 26, 9, 4)
values <- data.frame(label, value)
myplot <- ggplot(values, aes(x = "", y=value, fill=label))
myplot <- myplot + theme(legend.position="bottom")
myplot <- myplot + labs(fill="")
myplot <- myplot + geom_bar(stat="identity", width=1)
myplot <- myplot + geom_text(
  aes(x=1.3, y=value/2+c(0, cumsum(value)[-length(value)])),
  label=percent(value/100),
  size=2
)
myplot <- myplot + coord_polar(theta="y")
myplot <- myplot + theme(plot.background=element_rect(fill="red"))
myplot <- myplot + theme(
  plot.margin=unit(c(0,0,0,0), "mm"),
  legend.margin=unit(0, "mm"),
  axis.title=element_blank(),
  axis.ticks=element_blank()
)
ggsave("pie.pdf")

2 个答案:

答案 0 :(得分:1)

调整plot.margin设置,使左下角为负数。

plot.margin=unit(c(0,0,-12,-5), "mm")

如果你摆脱了底部的边距,你也会牺牲传奇。

答案 1 :(得分:1)

您可以通过主题元素axis.textaxis.tick.length删除其余的轴空间。

因此,您需要在theme代码中添加以下内容:

axis.text = element_blank(), axis.ticks.length = unit(0, "mm")

在ggplot2的当前开发版本 ggplot2_2.1.0.9001 中,有一个新的主题元素legend.box.spacing,这里也可以用来删除图例和图例之间的所有空格情节:legend.box.spacing = unit(0, "mm")