ggplot2 ggplot - Erhöhen Sie die Anzahl der Achsenticks




title size (5)

Sie können ein Funktionsargument zum Skalieren bereitstellen, und ggplot verwendet diese Funktion, um die Tick-Positionen zu berechnen.

library(ggplot2)
dat <- data.frame(x = rnorm(100), y = rnorm(100))
number_ticks <- function(n) {function(limits) pretty(limits, n)}

ggplot(dat, aes(x,y)) +
  geom_point() +
  scale_x_continuous(breaks=number_ticks(10)) +
  scale_y_continuous(breaks=number_ticks(10))

Ich erzeuge Diagramme für einige Daten, aber die Anzahl der Ticks ist zu klein, ich brauche mehr Genauigkeit beim Lesen.

Gibt es eine Möglichkeit, die Anzahl der Achsen-Ticks in ggplot2 zu erhöhen?

Ich weiß, dass ich ggplot sagen kann, einen Vektor als Achsen-Ticks zu verwenden, aber ich möchte die Anzahl der Ticks für alle Daten erhöhen. Mit anderen Worten, ich möchte, dass die Tick-Nummer aus den Daten berechnet wird.

Möglicherweise ggplot dies intern mit einem Algorithmus, aber ich konnte nicht finden, wie es das tut, um zu ändern, was ich will.


Sie können die Standardskalen von scale_x_continuous überschreiben, indem Sie scale_x_continuous und / oder scale_y_continuous . Beispielsweise:

library(ggplot2)
dat <- data.frame(x = rnorm(100), y = rnorm(100))

ggplot(dat, aes(x,y)) +
  geom_point()

Gibt dir das:

Und das Überschreiben der Skalen kann dir so etwas geben:

ggplot(dat, aes(x,y)) +
  geom_point() +
  scale_x_continuous(breaks = round(seq(min(dat$x), max(dat$x), by = 0.5),1)) +
  scale_y_continuous(breaks = round(seq(min(dat$y), max(dat$y), by = 0.5),1))

Wenn Sie einen bestimmten Teil eines Plots einfach "vergrößern" möchten, sehen Sie sich xlim() und ylim() an. Gute Einsichten können auch hier gefunden here , um auch die anderen Argumente zu verstehen.


Zusätzlich,

ggplot(dat, aes(x,y)) +
geom_point() +
scale_x_continuous(breaks = seq(min(dat$x), max(dat$x), by = 0.05))

Funktioniert für binär oder diskret skalierte X-Achsen-Daten (dh, das Runden ist nicht notwendig).


Sie können die integrierte pretty Funktion verwenden:

ggplot(dat, aes(x,y)) + geom_point() +
scale_x_continuous(breaks = pretty(dat$x, n = 10)) +
scale_y_continuous(breaks = pretty(dat$y, n = 10))

Basierend auf Daniel Krizians Kommentar können Sie auch die Funktion pretty_breaks aus der pretty_breaks verwenden, die automatisch importiert wird:

ggplot(dat, aes(x,y)) + geom_point() +
scale_x_continuous(breaks = scales::pretty_breaks(n = 10)) +
scale_y_continuous(breaks = scales::pretty_breaks(n = 10))

Sie müssen lediglich die Anzahl der gewünschten Ticks eingeben.


Fügen Sie die folgende Zeile hinzu:

polygon(x,pmin(y1,y2),col="gray")

Dies funktioniert im Prinzip genau wie das Stiftwerkzeug in Photoshop, wo der erste Vektor, x die x-Koordinaten und der zweite Vektor, pmin(y1,y2) die y-Koordinaten sind. pmin gibt Ihnen einen Vektor mit den Minimalwerten von zwei Vektoren elementweise, was den y-Koordinaten des oberen Teils der Überlappung entspricht.

BEARBEITEN:

Ich bevorzuge die Verwendung von curve() (wie Andrie vorgeschlagen hat), die zum Zeichnen einer Funktion verwendet werden kann. Sie können die Koordinaten auch beim Plotten speichern und uns auf genau dieselbe Weise zuweisen:

fun1 <- curve(dnorm(x,mean=0,sd=1),type="l",lwd=2,col="red")
fun2 <- curve(dnorm(x,mean=3,sd=2),type="l",lwd=2,col="blue",add=TRUE)
polygon(fun1$x,pmin(fun1$y,fun2$y),col="gray")






r ggplot2