webentwicklung-frage-antwort-db.com.de

Wie setze ich Grenzen für Achsen in ggplot2 R-Plots?

Ich zeichne folgendes:

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 und 5000 anstelle des gesamten Bereichs zeichnen.

Wie kann ich das machen?

329
David B

Grundsätzlich haben Sie zwei Möglichkeiten

_scale_x_continuous(limits = c(-5000, 5000))
_

oder

_coord_cartesian(xlim = c(-5000, 5000)) 
_

Wobei der erste alle Datenpunkte außerhalb des angegebenen Bereichs entfernt und der zweite nur den sichtbaren Bereich anpasst. In den meisten Fällen würden Sie den Unterschied nicht sehen, aber wenn Sie irgendetwas an die Daten anpassen, würden sich wahrscheinlich die angepassten Werte ändern.

Sie können auch die Kurzschriftfunktion xlim (oder ylim) verwenden, mit der wie mit der ersten Option Datenpunkte außerhalb des angegebenen Bereichs entfernt werden:

_+ xlim(-5000, 5000)
_

Weitere Informationen finden Sie in der Beschreibung von coord_cartesian .

Das RStudio-Spickzettel für _ggplot2_ macht dies visuell deutlich. Hier ist ein kleiner Ausschnitt aus diesem Spickzettel:

enter image description here

Verteilt unter CC BY.

551
midtiby

Kurzer Hinweis: Wenn Sie auch coord_flip() verwenden, um die x- und die y-Achse zu spiegeln, können Sie mit coord_cartesian() keine Bereichsgrenzen festlegen, da diese beiden Funktionen exklusiv sind (siehe hier ).

Glücklicherweise ist dies eine einfache Lösung. Setzen Sie Ihre Grenzen innerhalb von coord_flip() wie folgt:

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

Dies ändert nur den sichtbaren Bereich (d. H. Entfernt keine Datenpunkte).

36
Bill