有没有办法在ggplot2中居中文本

Rob*_*lly 1 r ggplot2

有没有一种方式ggplot2,要么

  1. 以编程方式访问网格区域的x和y轴范围或
  2. 告诉geom_text中心文本在绘图区域的中间

testData <- data.table(a = c(1,2,3,4), b=rnorm(100, 1, 3), c=rnorm(100))
ggplot(testData) + geom_point(aes(x=a, y = b)) + geom_text(aes(x=a, y = 0, label="label")) 
Run Code Online (Sandbox Code Playgroud)

我想避免手动设置y轴的范围,因为我自动生成大量图表,并且更愿意ggplot2确定正确的使用范围.

Hen*_*rik 5

这是你想要的吗:

g1 <- ggplot(testData) +
  geom_point(aes(x = a, y = b)) +
  geom_text(aes(x = a, y = mean(range(b)), label="label"))

g1
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

Q1,如果你想访问绘图区域的范围:

# build plot object for rendering
gg1 <- ggplot_build(g1)

gg1$panel$ranges[[1]]$x.range
gg1$panel$ranges[[1]]$y.range

# mid-point of y-range from plot object 
mean(gg1$panel$ranges[[1]]$y.range)
# [1] 0.5517525

# mid-point used in plot above
with(testData, y = mean(range(b)))
# [1] 0.5517525
Run Code Online (Sandbox Code Playgroud)