Sto costruendo un grafico quantile-quantile su una variabile denominata x
da un frame di dati denominato df
nell'esempio di lavoro fornito di seguito. Vorrei etichettare i punti con la variabile name
del mio set di dati df
.Come posso etichettare i punti di un grafico quantile-quantile composto con ggplot2?
È possibile farlo in ggplot2 senza ricorrere alla soluzione dolorosa (codificando la distribuzione teorica a mano e poi tracciando quella empirica)?
Modifica: succede che sì, grazie a un utente che ha pubblicato e quindi cancellato la sua risposta. Vedi i commenti dopo la risposta di Arun sotto. Grazie a Didzis per la sua soluzione altrimenti intelligente con ggbuild
.
# MWE
df <- structure(list(name = structure(c(1L, 2L, 3L, 4L, 5L, 7L, 9L,
10L, 6L, 12L, 13L, 14L, 15L, 16L, 17L, 19L, 18L, 20L, 21L, 22L,
8L, 23L, 11L, 24L), .Label = c("AUS", "AUT", "BEL", "CAN", "CYP",
"DEU", "DNK", "ESP", "FIN", "FRA", "GBR", "GRC", "IRL", "ITA",
"JPN", "MLT", "NLD", "NOR", "NZL", "PRT", "SVK", "SVN", "SWE",
"USA"), class = "factor"), x = c(-0.739390016757746, 0.358177826874146,
1.10474523846099, -0.250589535389937, -0.423112615445571, -0.862144579740376,
0.823039669834058, 0.079521521937704, 1.08173649722493, -2.03962942823921,
1.05571087029737, 0.187147291278723, -0.144770773941437, 0.957990771847331,
-0.0546549555439176, -2.70142550075757, -0.391588386498849, -0.23855544527369,
-0.242781575907386, -0.176765072121165, 0.105155860923456, 2.69031085872414,
-0.158320176671995, -0.564560815972446)), .Names = c("name",
"x"), row.names = c(NA, -24L), class = "data.frame")
library(ggplot2)
qplot(sample = x, data = df) + geom_abline(linetype = "dotted") + theme_bw()
# ... using names instead of points would allow to spot the outliers
Sto lavorando su un adattamento di this gist, e prenderà in considerazione l'invio di altre domande a CrossValidated se ho domande circa la diagnostica di regressione, che potrebbero essere di interesse per gli utenti CV.
qualcuno ha postato una soluzione ancora più diretta Didzis ed eliminato. Era qualcosa come 'ggplot (df, aes (sample = x)) + geom_text (label = df $ name, stat =" qq ") + geom_abline (linetype =" punteggiato ")'. Nel caso tu sia interessato. – Arun