展开比例尺/轴的顶部以包含文本

sha*_*roz 7 r ggplot2

我正在尝试注释图形的每个方面中的最高值。

我不知道如何在不将文本剪裁到最高值上方的情况下删除y轴底部的多余空间。

A)是否存在非对称版本scale_y_continuous(expand=c(0,0))

B)或者,是否有一种方法可以使ggplot包含文本作为图形范围的一部分?

# a simple dataset
count <- 40
data <- data.frame(
  category = sample(LETTERS[1:3], count, TRUE),
  x = rnorm(count),
  y = abs(rnorm(count))
)

# find the highest value in each category
require(plyr)
data <- data[order(-data$y),]
topValues <- ddply(data, .(category), head, 1)

require(ggplot2)
ggplot(data) +
  geom_line(aes(x=x, y=y)) +
  geom_text(data=topValues, aes(x=x, y=y, label=y)) + # label the highest y value
  # add vjust=-1 to put text above point if possible
  facet_grid(category ~ ., scale="free") +
  scale_x_continuous(expand=c(0,0)) +
  scale_y_continuous(expand=c(0,0))
Run Code Online (Sandbox Code Playgroud)

样本输出

sha*_*roz 7

答案来自巴蒂斯特

只需将此调用添加到绘图中即可在文本顶部创建一个空白点:

geom_blank(data=topValues, aes(x=x, y=y*1.1, label=y))
Run Code Online (Sandbox Code Playgroud)