在R ggplot中,如何为stat_qq中的点添加标签


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需要xyaes

我该怎么修?

我发现了如何计算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)

最新更新