【问题标题】:ggplot - Keep a variable length text inside canvasggplot - 在画布内保留可变长度的文本
【发布时间】:2019-05-07 15:21:16
【问题描述】:

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

我的第一个想法是创建一个函数,其中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()

【问题讨论】:

  • 用这个帮助替换你的geom_text() 吗? geom_text(x=xLegPos, y=2, label=variableLabelSize, hjust = "inward", vjust = "inward")
  • 感谢@teunbrand 的建议。但这仅适用于 geom_text 使用 geom_text(aes(...)) 映射到 data.frame 的情况

标签: r ggplot2 geom-text right-align


【解决方案1】:

我最终找到了一种使用参数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

【讨论】:

    猜你喜欢
    • 2012-11-18
    • 2013-07-24
    • 1970-01-01
    • 2022-08-15
    • 1970-01-01
    • 2019-06-22
    • 2016-12-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多