修复 plotnine / ggplot 中绘图区域与 x 轴标签之间的距离

Fix the distance between the plotting area and x-axis label in plotnine / ggplot

我想 fix/set(而不是增加)plotnine/ggplot 中绘图区域和 x 轴标签之间的距离。

library(ggplot2)
ggplot(diamonds)
ggplot(diamonds) + geom_point(aes(x=carat, y=price, color=cut)) + geom_smooth(aes(x=carat, y=price, color=cut)) 

我想修正 上两个红色条之间的距离。我希望能够让 x-ticklabels 占用更多 space(旋转,更大的字体等)而不影响 x 轴标签相对于绘图的位置。我找到了很多调整间距的例子 - 但不是手动设置它。

这可能是一个特定于 R 的解决方案,我不知道 plotnine 是如何工作的。在 R 中,x 轴标签的高度由文本的尺寸动态确定,没有方便的手动设置方法 (afaik)。

相反,可以在 gtable 中编辑该行的高度,然后绘制结果。

library(ggplot2)
library(grid)

p <- ggplot(diamonds) + 
  geom_point(aes(x=carat, y=price, color=cut)) + 
  geom_smooth(aes(x=carat, y=price, color=cut)) 

# Convert plot to gtable
gt <- ggplotGrob(p)
#> `geom_smooth()` using method = 'gam' and formula 'y ~ s(x, bs = "cs")'
# Find row in gtable where the bottom axis is located
axis_row <- with(gt$layout, t[grep("axis-b", name)])
# Manually set the height of that row
gt$heights[axis_row] <- unit(2, "cm")

# Display new plot
grid.newpage(); grid.draw(gt)

reprex package (v1.0.0)

于 2021-08-17 创建