2012-11-05 19 views
42

Potete aiutarmi a mettere etichette sul grafico seguente?Come posso etichettare i punti in questo scatterplot?

http://img849.imageshack.us/img849/7594/snap1034.png

Il codice che uso è:

valbanks<-scan("banks.txt", what=list(0,0,""), sep="", skip=1, comment.char="#") 
valbanks 

valj2007<-valbanks[[1]] 
valj2009<-valbanks[[2]] 
namebank<-valbanks[[3]] 

percent_losses<-(valj2009-valj2007)/valj2007 
percent_losses 

abs_losses<-(valj2007-valj2009) 
abs_losses 

plot(abs_losses, percent_losses,main="Absolute Losses vs. Relative Losses(in%)",xlab="Losses (absolute, in miles of millions)",ylab="Losses relative (in % of January´2007 value",col="blue", pch = 19, cex = 1, lty = "solid", lwd = 2,text(percet_losses, abs_losses,namebank)) 

text(percet_losses, abs_losses,labels=namebank, cex= 0.7, offset = 10) 

ed i dati sono:

Value_Jan_2007 Value_Jan_2009 Bank # 
49 16 Morgan_Stanley 
120 4.6 RBS 
76 10.3 Deutsche_Bank 
67 17 Credit_Agricole 
80 26 Societé_Generale 
91 7.4 Barclays 
108 32.5 BNP-Paribas 
93 26 Unicredit 
116 35 UBS 
75 27 Credit_Suise 
100 35 Goldman_Sachs 
116 64 Santander 
255 19 Citigroup 
165 85 JP_Morgan 
215 97 HSBC 

ringrazio molto

Qual è la possibilità di mettere l'etichetta in basso, a destra, in alto, a sinistra, ...?

Riepilogando: voglio un grafico simile a quello presente nel secondo messaggio da this post ma non c'è il codice lì.

Quale codice devo inserire?


se ho messo text(percet_losses, abs_losses,namebank), ottengo nulla: il grafico continuare senza modifiche.

Potrebbe mostrarmi il codice che ho bisogno di inserire?

Grazie

+1

Con "secondo messaggio", vuoi dire [questo] (http://stackoverflow.com/a/7612350/1451109) di @joran?In tal caso, in questa risposta ha spiegato esplicitamente che non l'ha prodotto a livello di programmazione ma manualmente con un software esterno. – plannapus

risposta

61

La chiamata al text() non visualizzerà nulla perché è invertita la tua e la vostra x y:

plot(abs_losses, percent_losses, 
    main= "Absolute Losses vs. Relative Losses(in%)", 
    xlab= "Losses (absolute, in miles of millions)", 
    ylab= "Losses relative (in % of January´2007 value)", 
    col= "blue", pch = 19, cex = 1, lty = "solid", lwd = 2) 

text(abs_losses, percent_losses, labels=namebank, cex= 0.7) 

Ora, se si desidera spostare le etichette verso il basso, a sinistra, in alto o destra è possibile aggiungere argomento pos= con valori, rispettivamente, 1, 2, 3 o 4. ad esempio, per posizionare le etichette su:

text(abs_losses, percent_losses, labels=namebank, cex= 0.7, pos=3) 

enter image description here

Potete naturalmente dà un vettore di valore per pos se volete alcune delle etichette in altre direzioni (ad esempio per Goldman_Sachs, UBS e Société_Generale dal momento che si sovrappongono con altre etichette):

pos_vector <- rep(3, length(namebank)) 
pos_vector[namebank %in% c("Goldman_Sachs", "Societé_Generale", "UBS")] <- 4 
text(abs_losses, percent_losses, labels=namebank, cex= 0.7, pos=pos_vector) 

enter image description here

0

si dovrebbe usare etichette attribuiscono funzione plot all'interno e il valore di questo attributo dovrebbe essere il vettore contenente i valori che si desidera per ogni punto di avere.

1

Ho provato il pacchetto directlabels per inserire etichette di testo. Nel caso di grafici a dispersione non è ancora perfetto, ma molto meglio della regolazione manuale delle posizioni, specialmente nei casi in cui si stanno preparando i grafici e non quello finale - quindi è necessario cambiare e creare la trama ancora e ancora -.

1

Solo per tracciare un vettore, è necessario utilizzare il seguente comando:

text(your.vector, labels=your.labels, cex= labels.size, pos=labels.position)