ggplot - 在 canvas 中保留可变长度的文本
ggplot - Keep a variable length text inside canvas
我需要 geom_text
显示的文本必须在情节的 canvas 内。问题是 geom_text
的内容是动态分配的。所以,我的问题是,如何制作下面的图,其中名为 variableLabelSize
的变量的内容完全显示在 canvas.
中
我的第一个想法是创建一个函数,其中 variableLabelSize
是 xLegPos
的参数。其次,我也尝试使用 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_text
的 x
值保留为最大值,即 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
我需要 geom_text
显示的文本必须在情节的 canvas 内。问题是 geom_text
的内容是动态分配的。所以,我的问题是,如何制作下面的图,其中名为 variableLabelSize
的变量的内容完全显示在 canvas.
我的第一个想法是创建一个函数,其中 variableLabelSize
是 xLegPos
的参数。其次,我也尝试使用 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_text
的 x
值保留为最大值,即 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