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