我正在尝试注释图形的每个方面中的最高值。
我不知道如何在不将文本剪裁到最高值上方的情况下删除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)

答案来自巴蒂斯特。
只需将此调用添加到绘图中即可在文本顶部创建一个空白点:
geom_blank(data=topValues, aes(x=x, y=y*1.1, label=y))
Run Code Online (Sandbox Code Playgroud)