【问题标题】:Fix Plot Size in ggplot2 relative to plot title修复 ggplot2 中相对于绘图标题的绘图大小
【发布时间】:2018-03-02 12:37:45
【问题描述】:

我正在使用 ggplot2 创建一些带有标题的图形,但发现当标题有下降(例如,小写 p、q、g、y)时,绘图的实际大小会略微缩小以适应所需的更大空间标题。

在正常的 ggplot 功能中是否有办法固定绘图大小,以便无论标题如何,数字都处于 100% 一致的位置?

这里有一些显示问题的快速示例代码;人们可能需要在本地运行代码才能清楚地看到图像中的差异。

 library(ggplot2)
 # No letters with descenders in title
 ggplot(data=mtcars,aes(x=disp,y=mpg)) + 
    geom_point() + ggtitle("Scatter Plot")

# Title has a descender (lowercase 'p')
ggplot(data=mtcars,aes(x=disp,y=mpg)) + 
    geom_point() + ggtitle("Scatter plot")

【问题讨论】:

  • 我记得之前有人问过这个问题,在 animation with different titles 的上下文中(下降问题更加明显)。我不认为 ggplot2 直接解决了这个问题,但您可能希望查看该线程中的解决方法/ cmets。我通常通过确保每个标题中都有一个降序字母来作弊。

标签: r ggplot2


【解决方案1】:

您可以在gtable中设置相关高度,

library(ggplot2)

p1 <- ggplot() + ggtitle("a")
p2 <- ggplot() + ggtitle("a\nb")

gl <- lapply(list(p1,p2), ggplotGrob)
th <- do.call(grid::unit.pmax, lapply(gl, function(g) g$heights[3]))
gl <- lapply(gl, function(g) {g$heights[3] <- th; g})
gridExtra::grid.arrange(grobs = gl, nrow=1)

编辑:为简单起见,这里是编辑一个绘图的方法

g = ggplotGrob(qplot(1,1) + ggtitle('title'))
g$heights[3] = grid::unit(3,"line")
grid.draw(g)

【讨论】:

  • 啊,这太棒了!这里的参数比我意识到的要多得多……有没有更直接的方法来指定这个?或者您是否介意为了简单起见展示您是如何专门设置单个表格的高度?
  • 所以...在标题中抛出一个带有降序的字母仍然会挤压情节。 (将 'title' 更改为 'title q' 或类似名称,您会看到)
  • 刚刚在 GIthub 上发现了这个问题,没有修复:github.com/tidyverse/ggplot2/issues/2288
猜你喜欢
  • 1970-01-01
  • 2017-04-02
  • 1970-01-01
  • 2021-11-24
  • 2015-06-17
  • 2011-09-02
  • 1970-01-01
  • 2016-03-09
  • 1970-01-01
相关资源
最近更新 更多