df <- data.frame(y = rt(26, df = 5), name = letters)
p <- ggplot(df, aes(sample = y))
p + stat_qq() + stat_qq_line()
以上内容产生了预期的情节。
但现在我需要每个点的标签,所以:
df <- data.frame(y = rt(26, df = 5), name = letters)
p <- ggplot(df, aes(sample = y))
p + stat_qq() + stat_qq_line() + geom_text(label = letters)
但它抱怨geom_text
需要x
和y
aes
。
我该怎么修?
我发现了如何计算y
。但不知道如何计算x
。
您可以使用ggplot_build()
来获取绘图中点的坐标。在您的情况下,这些可在data[[1]]
中找到。
默认标签显示在点的正上方。使用变量offset
调整间距。。。看起来不错。
library(ggplot2)
df <- data.frame(y = rt(26, df = 5), name = letters)
myplot <- ggplot(df, aes(sample = y)) +
stat_qq() +
stat_qq_line()
x.pnts <- ggplot_build(myplot)$data[[1]]$x
y.pnts <- ggplot_build(myplot)$data[[1]]$y
offset <- (max(y.pnts) - min(y.pnts)) / 20
myplot +
geom_text(label = df$name,
x = x.pnts,
y = y.pnts + offset)