【问题标题】:Left align ggplot title (Tried hjust/margin() and nothing works)左对齐 ggplot 标题(尝试了 hjust/margin() 并且没有任何效果)
【发布时间】:2017-06-01 01:44:04
【问题描述】:

所以我知道有很多关于这个问题的帖子(我想我现在已经全部阅读了)。在学习 hjust/vjust 是黑客之后,我尝试使用 hjust 和 margin() 并且没有任何效果;无论我做什么,ggplot 标题都保持居中对齐。我需要它左对齐。这可能吗?它与我当前代码的布局有关吗?有人可以帮忙吗?!代码如下。非常感谢您! :)

此外,除了上述问题,是否可以将标题文本放在彩色框内?例如,嵌入黑框内的白色文本?

再次感谢!

output$plot <- renderPlotly({
    if(input$Player == "")
      return(NULL)

    player_trend <- injury[injury$Player == input$Player, ]

    ggideal_point <- ggplot(player_trend) +
      geom_line(aes(x = Season, y = WAR), size = 1.25) +
      geom_point(aes(x = Season, y = WAR), size = 3) +
      labs(x = "Season", y = "WAR") +
      ggtitle("Title Goes Here") +

【问题讨论】:

  • 现在最简单的左对齐标题的方法是更新 ggplot。不过,你所拥有的看起来像是情节的一半(通过 Shiny)。如果ggplotly 搞砸了你的标题,你将不得不通过 plotly 的功能。

标签: r ggplot2 alignment margin title


【解决方案1】:

您没有提供任何数据,也没有提供错误和可能需要的输出的图片,并且实际上提出了多个问题。

您希望将操作作为 post-ggplot2-build grob 级别进行。这是一些非常低级的工作。

这个:

#' Completely flush-left-align ggplot2 title
#'
#' @return \code{gtable} object
#' @param gg ggplot2 object
title_left <- function(gg) {

  gt <- ggplot_gtable(ggplot_build(gg))
  gt$layout[which(gt$layout$name == "title"), c("l", "r")] <- c(1, max(gt$layout$r))
  gt

}

flush-left(完全)对齐标题。它不再是ggplot2 对象,您需要使用grid 函数来绘制它(例如grid::grid.newpage()grid::grid.draw())。如果您不希望它完全向左冲洗,则需要调整该功能。

对于你的第二个问题,你需要使用类似这样的东西——https://stackoverflow.com/a/37156845/1457051——然后改变上面的函数来移动 facet 标题和 rect grobs(我不会这样做,但这里的其他人可能会为你做)。

但是

您不在ggplot2-land,您在shiny 并使用plotly,所以这一切都没有实际意义。请注意,您实际上并没有告诉我们,但output$plot &lt;- renderPlotly({ 暗示了这一点。您对互动的渴望(具有讽刺意味的是)限制了您的选择。 plotly 非常适合快速交互,但与尝试将解决方案硬塞到 plotly 中相比,您花更少的时间制作自己的 htmlwidget (尽管为目标绘图元素添加自定义 CSS 可能有效,但也是将涉及研究)。

【讨论】:

    猜你喜欢
    • 2021-02-18
    • 1970-01-01
    • 2019-03-02
    • 1970-01-01
    • 1970-01-01
    • 2016-06-28
    • 1970-01-01
    • 2019-02-04
    相关资源
    最近更新 更多