2016-04-13 14 views
3

Ich muss mehrere Plots der gleichen zwei Variablen plotten, aber der Bereich der y-Werte unterscheidet sich zwischen Plots. Um die Y-Achsen zu vereinfachen, möchte ich, dass jedes Diagramm nur ein Häkchen und eine Beschriftung im Min- und Max-Bereich auf der Y-Achse zeigt (Min/Max des Diagramms, nicht die Daten).R plot y-Achse Tick Bars bei max und min

Ich habe mit den usr und yaxp Parameter herum gespielt, aber kein Glück. Hier ist ein Spielzeug Beispiel:

x<-1:10 
y<-3:12 
plot(x,y,yaxp=c(par("usr")[3],par("usr")[4],1)) 

Ich erwarte Striche/Etiketten entsprechend der Ober- und Unterseite des Grundstücks entlang der y-Achse (mit keiner in-between), aber dies wird nicht am Ende alle Strichmarkierungen setzen oder Beschriftungen auf der y-Achse. Kann jemand erklären, warum und wie man das gewünschte Ergebnis zurückbringt?

Danke!

Antwort

5

Bevor das Plotten tatsächlich stattfindet, sind die usr Werte für Ihre Daten nicht korrekt. Eine Möglichkeit, korrekte Werte zu erhalten, ist zuerst zu zeichnen, erhalten Sie die Werte, und dann wieder plotten diese Werte mit Hilfe der Strichmarkierungen setzen:

plot(x, y) 

min_tick <- par("usr")[3] 
max_tick <- par("usr")[4] 

plot(x, y, yaxt = "n") 
axis(side = 2, at = c(min_tick, max_tick)) 

enter image description here

Ich lasse die Standard-Kennzeichnung erfolgen. Das ist etwas, das wie gewünscht angepasst werden kann.

Wie @ 42 betont, ist das Standard-Plotting-Verhalten für die Achse, den Datenbereich um 4% zu erweitern. So kann die min und max berechnet werden, dass die Informationen verwenden, wie auch:

min_tick <- min(y) - (max(y) - min(y)) * 0.04 
max_tick <- max(y) + (max(y) - min(y)) * 0.04 
+0

Bei R-Plotting wird die Plot-Region typischerweise auf beiden Seiten des Min- und Max-Werts etwas verlängert (ich dachte, es sei 1,04, aber Ihr Beispiel schlägt vor, dass es 1,03 war), damit Punkte vollständig gedruckt werden können. Ihre Lösung entspricht nicht wirklich der Anforderung des OP, dass Ticks auf dem Min- und Max-Wert der Werte liegen, sondern stattdessen auf dem Min- und Max-Wert des Plotbereichs liegen. –

+0

@ 42 Das OP sagte: "Ich möchte, dass jedes Diagramm nur ein Häkchen und eine Markierung im Min- und Max-Bereich auf der Y-Achse zeigt (Min/Max des Diagramms, nicht die Daten)." Verkenne ich deinen Kommentar? – Jota

+0

Nein, aber anscheinend haben wir kein Verständnis dafür, was angefordert wurde. Ich konnte mir nicht vorstellen, dass das OP verstand, dass der Plotbereich größer als der Datenbereich war. –

1

Genau so ist es hier, die ggplot2 Äquivalent ist die breaks von scale_y_continuous einzustellen:

library(ggplot2) 

ggplot(data.frame(x, y), aes(x, y)) + 
    geom_point() + 
    scale_y_continuous(breaks = c(min(y), max(y))) 

plot with y breaks at min and max