如何增加情节周围的填充物?

时间:2019-06-22 03:59:17

标签: r ggplot2

我有一个水平条形图,其填充太紧:

data <- data.frame(month = factor(c("Nov", "Dec", "Jan", "Feb")),
                   count = c(1489, 788, 823, 1002))

g <- (ggplot2::ggplot(data, ggplot2::aes(x=month, y=count)) +
        ggplot2::geom_col() +
        ggplot2::scale_x_discrete(limits=rev(data$month)) +
        ggplot2::coord_flip()) +

g

horizontal barchart with too-tight padding

我对条形图之间的间距感到满意,但我希望4条形图框周围的空间更大。换句话说,我想在中央的4柱形图周围添加更多填充。用作4格堆栈的背景的浅灰色矩形区域应保持不变,但该矩形内4格堆栈的大小应缩小,从而产生在4格周围产生更宽的填充的净效果。 -酒吧栈;换句话说,更多的浅灰色背景将在4条烟囱周围可见。

此外,我正在寻找完全独立于轴上实际值的方式来执行此操作。无论x范围是0-1500还是0-1500000或完全是非数字(即分类),代码都应产生相同的视觉效果。

这意味着必须指定以下额外填充:(a)为图形总宽度和高度的百分比;或(b)固定像素数;或或(c)固定的度量单位(厘米,英寸,打印点等)。

最后,理想上,我希望能够为所有四个边缘分别指定填充。

我该怎么做?

重要我不想增加浅灰色背景周围的边距。我想增加浅灰色背景的填充。如果不清楚该区别,请参阅this

1 个答案:

答案 0 :(得分:2)

您可以在expand_scale型函数的expand参数中使用scale_x_continuous函数。有点罗word,但是...

ggplot(data, aes(x=month,y=count)) +
    geom_bar(stat="identity") + 
    scale_x_discrete(limits=(data$month), expand=expand_scale(mult=c(0.5,0.5))) + 
    geom_text(aes(label=count), hjust=-0.3) +
    coord_flip() + scale_y_continuous(expand=expand_scale(mult=c(0.5,0.5)))

使用mult向量的两个元素来定义坐标轴上方和下方的填充,因此您可以独立更改图形的每一边(尽管它不是完全透明的,并且需要一些摆弄)。有关更多信息,请参见?expand_scale

enter image description here