2017-02-08 4 views
1

Ändern Bisher habe ich im Anschluss an den von meiner ggplot Compilation:ggplot2 - numerischen Achsentitel zu Vektor von Strings

enter image description here

Und ich habe die Achse genau richtig dieses Mal ... mit dem folgenden Code-Schnipsel :

p<- p + ylim(c(0,100)) 
p<- p + geom_hline(aes(yintercept=0)) 

p<- p + scale_x_continuous(breaks = c(seq(1940,1985,by=5))) 
p 

so habe ich eine x-Achse 1940 bis 1985 in Schritten von 5 und eine y-Achse von 0-100 um Schritte von 20 ...

Die erste Frage

Wie mache ich die 100 erscheinen auf der Y-Achse?

Die zweite Frage

Wie kann ich eine x-Etiketten in den folgenden String-Vektoren ändern?

abbrev_x <- c("1940","'45","'50","'55","'60","'65","'70","'75","'80","'85") 
abbrev_y <- c("0","20","40","60","80","100%") 

So ist die beste Lösung, die ich gefunden habe, dreht sich um scale_x_continuous, die der folgende Code-Schnipsel Beispiel die Arbeit mit bereits vorbestehenden String Achsenbeschriftungen schlägt vor:

p + scale_x_discrete(limit = c("I1", "SI2", "SI1"), 
       labels = c("Ione","SItwo","SIone")) 

enter image description here

Diese ist sicherlich ein Problem, als was ich schreiben möchte, ist folgendes:

abbrev_x <- c("1940","'45","'50","'55","'60","'65","'70","'75","'80","'85") 
abbrev_y <- c("0","20","40","60","80","100%") 
p<- p + scale_x_continuous(breaks = abbrev_x) 
p<- p + scale_y_continuous(breaks = abbrev_y) 
p 

Aber das scheint jetzt eine fiktive Realität in meiner Welt zu sein. Um diese Fiktion zu rechtfertigen, hier ist der folgende Fehlercode, unter anderem, wie ich zwinge:

Error in x - from[1] : non-numeric argument to binary operator 

Irgendwelche Gedanken?

Antwort

1

Sie müssen zwei Parameter richtig kontinuierliche Achse beschriften:

  • Pausen: angeben, wo die Etiketten
  • Etiketten platzieren: spezifizieren, was auf Achse setzen Etiketten

in der scale_x/y_continuous Funktion:

Beispiel Datenrahmen:

df <- data.frame(YearOfBirth = seq(1940,1985,by=5), AverageProbability = runif(10) * 100) 

abbrev_x <- c("1940","'45","'50","'55","'60","'65","'70","'75","'80","'85") 
abbrev_y <- c("0","20","40","60","80","100%") 

ggplot(df, aes(x = YearOfBirth, y = AverageProbability)) + 
    geom_line(col = "burlywood3") + 
    scale_x_continuous(breaks = seq(1940,1985,by=5), labels = abbrev_x) + 
    scale_y_continuous(breaks = (0:5)*20, labels = abbrev_y, limits = c(0, 110)) 

enter image description here

+0

erhalte ich eine leere Diagramm ohne Datenleitungen auf sie mehr als ich das Snippet vorgeschlagen verwenden. Ändert 'Labels =" ... "' den Dateninhalt in meinem ggplot? – bmc

+0

Ihre tatsächlichen Daten können außerhalb des Bereichs liegen, den ich hier verwende. Ich gehe davon aus, dass Ihre Wahrscheinlichkeit von 0 auf 1 geht. Sie haben nicht bemerkt, dass Ihre Daten von 0 bis 100 gehen. 'Labels = ...' ändert die Daten nicht Inhalt ändert sich, wie die Achse markiert ist. – Psidom

+1

Mein Freund, du bist ein absoluter Held. – bmc

Verwandte Themen