当plot.margin出现在plot2时,标题向右对齐

当plot.margin出现在plot2时,标题向右对齐,r,ggplot2,R,Ggplot2,我想把标题推到右边,但包括增加的边距(右边30毫米)。我找不到任何关于如何做这件事的信息。在theme()中使用plot.caption=element\u text(hjust=1)无效。如果可能,我想要纯ggplot2解决方案。它需要在任何绘图中工作(不同的x限制不仅在这个绘图中) 编辑: 目标是实现这一点: 您可以在绘图之前修改标题的grob位置。(从技术上讲,这是一个纯粹的ggplot2解决方案,因为grob黑客攻击是在绘制ggplot对象的正常过程中完成的。) 乱劈 在控制台中运行以

我想把标题推到右边,但包括增加的边距(右边30毫米)。我找不到任何关于如何做这件事的信息。在
theme()中使用
plot.caption=element\u text(hjust=1)
无效。如果可能,我想要纯ggplot2解决方案。它需要在任何绘图中工作(不同的x限制不仅在这个绘图中)

编辑:

目标是实现这一点:


您可以在绘图之前修改标题的grob位置。(从技术上讲,这是一个纯粹的ggplot2解决方案,因为grob黑客攻击是在绘制ggplot对象的正常过程中完成的。)

乱劈 在控制台中运行以下行:

trace(ggplot2:::ggplot_gtable.ggplot_built, edit = TRUE)
untrace(ggplot2:::ggplot_gtable.ggplot_built)
应出现一个弹出窗口,显示跟踪函数的实际代码:

function (data) 
{
  plot <- data$plot
    ...
    plot_table$grobs <- plot_table$grobs[c(nrow(plot_table$layout), 
      1:(nrow(plot_table$layout) - 1))]
  }
  plot_table
}
在本次R会话的剩余时间内,您绘制的任何ggplot中的任何标题都将一直对齐到绘图背景区域的右侧,而不是绘图面板。(此效果不会在新会话中持续;如果需要,请重复上述步骤。)

扭转局面 如果希望在当前R会话中停止效果,请在控制台中运行以下行:

trace(ggplot2:::ggplot_gtable.ggplot_built, edit = TRUE)
untrace(ggplot2:::ggplot_gtable.ggplot_built)

任何ggplot中的任何标题现在都将再次右对齐到绘图面板。

plot.caption.position=“plot”

把这个添加到主题中对我很有用

在主题()中使用plot.caption=element\u text(hjust=1)不起作用

是的,但是

由于未知的原因,hjust实际上理解c(0,1)之外的值。它是脆弱的,因为你需要手动调整它,但它可以工作

库(tidyverse)
tibble(x=字母[1:4],n=10*1:4,lab=“long-thus-margin”)%>%
ggplot(aes(重新排序(x,n,n))+
geom_col()+
几何图形文本(aes(标签=实验室),hjust=-0.1)+
坐标翻转(clip=“off”)+
实验室(caption=“这是caption”)+
主题_极小值()+
主题(
plot.margin=单位(c(0,30,0,0),“mm”),
plot.caption=元素\文本(hjust=1.25)
)


由(v2.0.0)于2021-04-28创建。

您可以有分数值:
plot.caption=element\u text(hjust=30/40)
。似乎更好,
hjust=0
向左对齐,其他值应将标题放在轴限制之间。但我想将标题推到绘图的最右边缘+30mm的边距可能
hjust=1+30/40
?或者类似的。问题是让它在任何绘图中都能工作,绘图度量单位不是mm。当我调整绘图的大小使其变宽时,标题位置会发生变化。hjust的值大于1时,标题将消失。不,我发布了该评论,因为我以前尝试过它。我刚刚用注释中的值确认了它,是的,它使标题消失了,但没有
hjust=1+10/40
。(我选择了10==40-30)。如果每个问题都有一个绘图页边距,则这不起作用,不幸的是,这看起来更像是一个注释,而不是一个完整的答案,其中可能包括证明答案解决问题的输出。