【问题标题】:Increasing the plot area in ggplot to cope with geom_text at plot edges增加 ggplot 中的绘图区域以应对绘图边缘的 geom_text
【发布时间】:2012-09-17 20:19:00
【问题描述】:

如何增加带有一个基于因子的轴和一个数值轴的图表的灰色绘图区域,以便geom_text() 绘图中的文本标签可见且不会延伸到绘图区域之外?

特别是,我想扩展灰色区域以在绘图区域内提供一个边距区域,使文本标签完整显示。

或者有没有更好的方法?

【问题讨论】:

  • 您可以尝试将expand 参数设置为scale_x_discrete 和/或scale_y_continuous。它需要一个长度为 2 的数字向量,第一个是扩展因子,第二个是加法扩展。尝试不同的值,看看效果如何。
  • 我希望 Fellow 的 wordcloud 与 ggplot2 兼容,因为他的更新版本专门处理这个问题:blog.fellstat.com/?p=248
  • @BrianDiggs 感谢您的提示。 expand 似乎可以解决问题,尽管我认为因此需要对样式进行一些调整...我正在尝试以theme_bw() 开头...

标签: r plot


【解决方案1】:

您可以使用ggplot_gtable 更改每个ggplot 的布局选项,然后使用grid.arrange 显示所有绘图。

library(ggplot2)
library(gridExtra)
## create a dummy ggplot
(g1 <- ggplot(mtcars, aes(wt, mpg)) + 
       geom_text(aes(label=rownames(mtcars)), size=6, angle=45) +
       theme(plot.margin = unit(rep(1, 4), "cm")))

显然,文本标签不会延伸到绘图区域之外。但是下面的代码只允许这样做:

gg_table <- ggplot_gtable(ggplot_build(g1))
gg_table$layout$clip[gg_table$layout$name=="panel"] <- "off"
grid.draw(gg_table)

为每个面板创建一个gg_table,然后使用grid.arrange显示全部:

grid.arrange(gg_table, gg_table, gg_table, gg_table, ncol=2)

我知道这是劳动密集型的,但您可以编写一个函数来创建多个 ggplots 和 gg_tables 以节省时间。

【讨论】:

    猜你喜欢
    • 2013-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-01
    • 2017-10-01
    • 1970-01-01
    相关资源
    最近更新 更多