2010-11-16 12 views
10

sto tramando due linee utilizzandolinee etichetta in un plot

plot(x, y, type = "l", color = "red") 

e

points(x2, y2, type = "l", color = "blue") 

voglio essere in grado di aggiungere un'etichetta accanto ad ogni riga (invece di una leggenda). Sono abbastanza sicuro che sia possibile utilizzare il pacchetto in http://directlabels.r-forge.r-project.org/.

Tuttavia, non trovo un modo semplice per farlo.

risposta

14

È possibile utilizzare lo locator() entro text() con il metodo di scatto &.

y <- rnorm(100, 10) 
y2 <- rnorm(100, 20) 
x <- 1:100 

plot(x, y, type = "n", ylim = c(0, 40), xlim = c(0, 120)) 
lines(x, y) 
lines(x, y2, col = "red") 
text(locator(), labels = c("red line", "black line)")) 

alt text

0

sguardo alla funzione labcurve nel pacchetto Hmisc.

9

Invece di utilizzare il locatore(), è possibile anche solo fare delle coordinate dell'etichetta una funzione dei dati. Ad esempio, trasporta sulle spalle il demo di Roman:

text(x=rep(max(x)+3, 2), y=c(mean(y), mean(y2)), pos=4, labels=c('black line', 'red line')) 
3

Per utilizzare directlabels, è necessario strutturare i dati in un data.frame e quindi utilizzare un sistema di tracciatura di alto livello come il ggplot2, o nell'esempio qui sotto, lattice:

y <- rnorm(100, 10) 
y2 <- rnorm(100, 20) 
x <- 1:100 
treatment <- rep(c("one group","another"),each=length(x)) 
df <- data.frame(x=c(x,x),y=c(y,y2),treatment) 
library(lattice) 
p <- xyplot(y~x,df,groups=treatment,type="l") 
if(!require(directlabels)){ 
    install.packages("directlabels") 
    library(directlabels) 
} 
print(direct.label(p)) 
print(direct.label(update(p,xlim=c(0,120)),last.points)) 
3

locator() è un metodo interattivo per ottenere coordinate cliccando su un grafico esistente.

Ecco le istruzioni su come utilizzare locator() per trovare le coordinate corrette per un'etichetta su un grafico.

Fase 1: Tracciare la curva:

plot(1:100) 

Fase 2: Digitare il seguente nella console:

coords <- locator() 

Fase 3: Fare clic una volta sulla trama, quindi fare clic su Stop .. Stop Locator nella parte in alto a sinistra del grafico (questo restituisce il controllo alla console R).

Fase 4: trovare le coordinate restituite:

coords 
$x 
[1] 30.26407 
$y 
[1] 81.66773 

Fase 5: Ora, è possibile aggiungere un'etichetta alla trama esistente utilizzando queste coordinate:

text(x=30.26407, y=81.66773,label="This label appears where I clicked") 

o

text(x=coords$x, y=coords$y,label="This label appears where I clicked") 

Ecco il risultato:

enter image description here

Si noterà che l'etichetta appare con il suo centro in cui si è fatto clic. È meglio se l'etichetta appare con il suo primo carattere in cui hai fatto clic. Per trovare il parametro corretto, consultare la guida per text, e aggiungere il parametro pos=4:

text(x=30,y=80,pos=4,label = "hello") 

Note:

  • L'etichetta appare nella stessa coordinate x, y come punti sul grafico. Quindi, x = 100, y = 0 apparirebbe sulla inferiore destro, mentre x = 0, y = 100 apparirebbe sulla superiore sinistro.
  • È inoltre possibile utilizzare legend() per tracciare un'etichetta (questo disegna un riquadro attorno all'etichetta che spesso appare più bello).
  • Vedere How to change font family in a legend in an R-plot? per come modificare il carattere in una legenda e come posizionare automaticamente la legenda in alto a destra del grafico.
  • Si consiglia di acquisire familiarità con ggplot2 anziché il grafico, poiché ggplot2 è lo standard di riferimento per la produzione di grafici.