在绘图中右/左对齐字幕位置

6

我该如何在r的 "base" 绘图中更改副标题的位置?是否有特殊的参数?我希望动态地将副标题左对齐或右对齐。

数据

plot(mtcars$mpg,mtcars$qsec,xlab="",sub="I WANT TO\nBE RIGHT\nALIGNED")

将数据绘制为所需的红色输出

enter image description here

编辑

plottR <- function(...) {
    plot(...)
}

plottR(mtcars$mpg, mtcars$qsec, ylab="Y Must Center", xlab="X Must Center", main="Must center", sub="Must right-align",adj=1)

我可以输入一些内容到plottR,这样它仅对齐字幕吗?

编辑2

我刚刚发现。我可以在plot中评估title()

plottR(mtcars$mpg, mtcars$qsec, ylab="Y Must Center", xlab="X Must Center", main = "Must Center", title(sub ="Hey Only\nim right\ncool huh?",adj=1))
1个回答

4
您可以使用par设置adj。从帮助页面中得知: 值为0会产生左对齐的文本,0.5(默认值)会居中文本,1会右对齐文本。(允许[0, 1]之间的任何值,在大多数设备上,该区间外的值也可以工作。) 缺点是它会影响textmtexttitle的文本对齐方式。因此,如果我们想保留标题和Y轴标题不变,则必须将代码分成几部分。
您可以使用以下代码:
# store the current value of adj
adj.old <- par()$adj    # default is 0.5

# plot with the current value of adj
plot(mtcars$mpg, mtcars$qsec, xlab="")

# set adj to right-aligned and plot the subtitle
par(adj = 1)
title(sub = "I WANT TO\nBE RIGHT\nALIGNED")

# reset adj to previous value
par(adj = adj.old)

这将生成以下图表:

在此输入图片描述


1
谢谢。我找到了adj参数。虽然我的问题中没有提到,但是adj也会移动主标题。有没有办法只移动副标题? - Andre Elrico
@AndreElrico 这基本上就是我在上面的代码中所做的。我使用plot生成一个没有副标题但带有Y轴标题**(你也可以在这里添加主标题)**的图形,在adj具有其默认值(0.5)的条件下。然后,我改变了adj=1并使用title函数添加了副标题。最后,我重置了adj - KoenV
它有效。那可能是最好的解决方案了。不幸的是,我正在使用调用绘图的函数,并且我正在...参数中工作。所以我不能在那里过程化编码。但这是一个很好的解决方法 :-) - Andre Elrico
@AndreElrico 这只是一个建议:您可以采用上面的代码,包括图形,并发布一个新问题,询问适合您需求的替代方案。如果您让我知道新问题,我一定会考虑投票支持它。祝好运! - KoenV
嘿,我刚刚更新了问题,以更精确地匹配我的情况。如果你有任何想法或建议,请告诉我 :-) - Andre Elrico
@AndreElrico 我认为你应该发布一个新的问题,询问另一种方法。这个问题现在已经有点“老”,会吸引更少的关注。 - KoenV

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接