2012-11-05 11 views
42

Czy możesz mi pomóc w umieszczeniu etykiet na poniższym wykresie?Jak mogę oznaczyć punkty na tym wykresie rozrzutu?

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

Kod używam jest:

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) 

a dane są:

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 

Dziękuję bardzo

Co to jest opcja, aby umieścić etykietę u dołu, z prawej, z góry, z lewej, ...?

Podsumowując: chcę wykres podobny, że ten, który znajduje się w drugiej wiadomości z this post ale nie ma tamtejszego kod.

Jaki kod mam podać?


jeśli kładę text(percet_losses, abs_losses,namebank), ja nic nie otrzymujemy: wykres dalej bez zmian.

Czy możesz pokazać mi kod, który muszę umieścić?

Dzięki

+1

Przez „drugim komunikacie”, masz na myśli [ten jeden] (http://stackoverflow.com/a/7612350/1451109) przez @joran?Jeśli tak, to w tej odpowiedzi wyjaśnił, że nie wyprodukował go programowo, lecz ręcznie za pomocą zewnętrznego oprogramowania. – plannapus

Odpowiedz

61

wezwanie do text() nie emituje nic, bo ty odwrócony swoją xi swoją 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) 

Teraz, jeśli chcesz przenieść etykiet w dół, w lewo, w górę lub w prawo można dodać argumentu pos= z wartości, odpowiednio, 1, 2, 3 lub 4. na przykład, aby umieścić etykiety up:

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

enter image description here

Można oczywiście daje wektor wartości do pos jeśli chcesz niektóre z etykiet w innych kierunkach (na przykład dla Goldman_Sachs, UBS i Société_Generale ponieważ pokrywają się z innymi etykietami):

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

należy użyć etykiety atrybutów wewnątrz funkcji plot, a wartość tego atrybutu powinna być wektorem zawierającym wartości, które mają za każdy punkt mieć.

1

Próbowałem pakiet directlabels do umieszczania etykiet tekstowych. W przypadku wykresów rozproszonych nie jest to jeszcze doskonałe, ale znacznie lepsze niż ręczne dostosowywanie pozycji, szczególnie w przypadkach, w których przygotowujesz fabułę roboczą, a nie ostatnią - więc musisz zmieniać i tworzyć fabułę raz za razem -.

1

Dla prostu wykreślenie wektora, należy użyć następującego polecenia:

text(your.vector, labels=your.labels, cex= labels.size, pos=labels.position) 
Powiązane problemy