web-dev-qa-db-fra.com

Comment puis-je étiqueter des points dans ce diagramme de dispersion?

Pouvez-vous m'aider à mettre des étiquettes sur le graphique suivant?

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

Le code que j'utilise est: 

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)

et les données sont:

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

Merci beaucoup

Quelle est la possibilité de mettre l'étiquette en bas, à droite, en haut, à gauche, ...?

Résumer: je veux un graphique semblable à celui qui est dans le deuxième message de cet article , Mais il n’ya pas de code.

Quel code je dois mettre?


si je mets text(percet_losses, abs_losses,namebank), je n’obtiens rien: le graphique continue sans changement.

Pourriez-vous me montrer le code que j'ai besoin de mettre?

Merci

50
Mika Ike

Votre appel à text() ne génère rien car vous avez inversé votre x et votre 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)

Maintenant, si vous souhaitez déplacer vos étiquettes vers le bas, la gauche, le haut ou la droite, vous pouvez ajouter l'argument pos= avec les valeurs respectives 1, 2, 3 ou 4. Par exemple, pour placer vos étiquettes vers le haut:

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

enter image description here

Vous pouvez bien sûr donner un vecteur de valeur à pos si vous souhaitez que certaines étiquettes soient dans d'autres directions (par exemple, pour Goldman_Sachs, UBS et Société_Generale car elles chevauchent d'autres étiquettes):

 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

74
plannapus

J'ai essayé le paquet directlabels pour mettre des étiquettes de texte. Dans le cas des nuages ​​de points, ce n'est pas encore parfait, mais bien mieux que d'ajuster manuellement les positions, en particulier dans les cas où vous préparez les tracés préliminaires et non le dernier - vous devez donc changer et créer à nouveau parcelle -.

1
Ali

Pour tracer un vecteur, utilisez la commande suivante:

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

Vous devez utiliser l'attribut labels à l'intérieur de la fonction de tracé et la valeur de cet attribut doit être le vecteur contenant les valeurs que vous souhaitez attribuer à chaque point.

0
Lucia Pasarin