ggplot - 在 canvas 中保留可变长度的文本

ggplot - Keep a variable length text inside canvas

我需要 geom_text 显示的文本必须在情节的 canvas 内。问题是 geom_text 的内容是动态分配的。所以,我的问题是,如何制作下面的图,其中名为 variableLabelSize 的变量的内容完全显示在 canvas.

我的第一个想法是创建一个函数,其中 variableLabelSizexLegPos 的参数。其次,我也尝试使用 hjust='inward',但我认为它可能只适用于映射到 aes 的数据。欢迎任何想法:)

我是运行这个演示:

require(ggplot2)
variableLabelSize = "Variable length size text"
xLegPos = 100 - 15

df1 = data.frame(x=1:100, y=rnorm(100))
p = ggplot(df1, aes(x=x, y=y)) + geom_point()
p = p + geom_hline(yintercept = 2)
p = p + geom_text(x=xLegPos, y=2, label=variableLabelSize)
p

我认为指出我的问题不同于问题 How to make geom_text plot within the canvas's bounds 很重要,因为在我的示例中,geom_text 没有 绑定到数据框。我的意思是,我不使用 geom_text(aes(...)),我使用 geom_text().

我最终找到了一种使用参数 hjust=1 的非常简单的方法。

此外,我将 geom_textx 值保留为最大值,即 max(df1$x)

下面,我绘制了三个文本,其中所有文本都右对齐:

require(ggplot2)
df1 = data.frame(x=1:100, y=rnorm(100))
p = ggplot(df1, aes(x=x, y=y)) + geom_point()
p = p + geom_hline(yintercept = c(-3, -2, 2))

variableLabelSize = "Variable length size text"
p = p + geom_text(x=max(df1$x), y=2, label=variableLabelSize, hjust=1) # added hjust=1
variableLabelSize = "Short text"
p = p + geom_text(x=max(df1$x), y=-3, label=variableLabelSize, hjust=1) # added hjust=1
variableLabelSize = "Very very very very very very long text"
p = p + geom_text(x=max(df1$x), y=-2, label=variableLabelSize, hjust=1) # added hjust=1

p