442 Stimmen

Wie man Grenzen für Achsen in ggplot2 R Plots setzen?

Ich zeichne das Folgende auf:

library(ggplot2)    

carrots <- data.frame(length = rnorm(500000, 10000, 10000))
cukes <- data.frame(length = rnorm(50000, 10000, 20000))
carrots$veg <- 'carrot'
cukes$veg <- 'cuke'
vegLengths <- rbind(carrots, cukes)

ggplot(vegLengths, aes(length, fill = veg)) +
 geom_density(alpha = 0.2)

Angenommen, ich möchte nur den Bereich zwischen x=-5000 a 5000 anstelle des gesamten Bereichs.

Wie kann ich das tun?

711voto

midtiby Punkte 13602

Grundsätzlich haben Sie zwei Möglichkeiten

scale_x_continuous(limits = c(-5000, 5000))

oder

coord_cartesian(xlim = c(-5000, 5000)) 

Bei der ersten werden alle Datenpunkte außerhalb des angegebenen Bereichs entfernt, bei der zweiten wird nur der sichtbare Bereich angepasst. In den meisten Fällen würden Sie den Unterschied nicht sehen, aber wenn Sie etwas an die Daten anpassen, würde es wahrscheinlich die angepassten Werte ändern.

Sie können auch die Shorthand-Funktion xlim (oder ylim ), die wie die erste Option die Datenpunkte außerhalb des angegebenen Bereichs entfernt:

+ xlim(-5000, 5000)

Weitere Informationen finden Sie in der Beschreibung von coord_cartesian .

En RStudio Spickzettel para ggplot2 macht dies visuell sehr deutlich. Hier ist ein kleiner Ausschnitt aus diesem Spickzettel:

enter image description here

Verteilt unter CC BY .

58voto

Bill Punkte 540

Kurzer Hinweis: Wenn Sie auch coord_flip() um die x- und y-Achse zu spiegeln, können Sie die Bereichsgrenzen nicht mit coord_cartesian() weil sich diese beiden Funktionen ausschließen (siehe aquí ).

Glücklicherweise ist dies leicht zu beheben: Setzen Sie Ihre Grenzen innerhalb coord_flip() etwa so:

p + coord_flip(ylim = c(3,5), xlim = c(100, 400))

Dadurch wird nur der sichtbare Bereich geändert (d. h. es werden keine Datenpunkte entfernt).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X