2015-04-25 18 views
10

Ich schaute über die documentation auf Jitter in ggplot während einige Plots machen, und ich erkannte, dass ich das Argument nicht wirklich verstehe.Wie wird der Jitter in ggplot ermittelt?

Darin heißt es, dass die Argumente sind:

Width: degree of jitter in x direction. Defaults to 40% of the resolution of the data. und
height: degree of jitter in y direction. Defaults to 40% of the resolution of the data.

Meine Frage ist, was genau Auflösung ist, und wie wird es bestimmt?

Auch können Sie diese außer Kraft setzen und einen Wert liefern, wie im Beispiel unten, wo wir 0,1 verwenden:

geom_point(position = position_jitter(w = 0.1, h = 0.1))

Welche Einheiten gehören zu 0,1? Darf ich annehmen, dass dies ein Teil der Entschließung ist?

Antwort

10

Wenn wir die source sehen wir dies zuerst finden:

PositionJitter <- proto(Position, { 
    objname <- "jitter" 

    adjust <- function(., data) { 
    if (empty(data)) return(data.frame()) 
    check_required_aesthetics(c("x", "y"), names(data), "position_jitter") 

    if (is.null(.$width)) .$width <- resolution(data$x, zero = FALSE) * 0.4 
    if (is.null(.$height)) .$height <- resolution(data$y, zero = FALSE) * 0.4 

    trans_x <- NULL 
    trans_y <- NULL 
    if(.$width > 0) { 
     trans_x <- function(x) jitter(x, amount = .$width) 
    } 
    if(.$height > 0) { 
     trans_y <- function(x) jitter(x, amount = .$height) 
    } 

    transform_position(data, trans_x, trans_y) 
    } 

}) 

Und würden Sie es nicht wissen, resolution ist eine exportierte Funktion (oder Sie könnten nur die Quellen danach suchen Sie here Landung):

function (x, zero = TRUE) 
{ 
    if (is.integer(x) || zero_range(range(x, na.rm = TRUE))) 
     return(1) 
    x <- unique(as.numeric(x)) 
    if (zero) { 
     x <- unique(c(0, x)) 
    } 
    min(diff(sort(x))) 
} 

Also ... los gehts!

"Auflösung" bedeutet in diesem Zusammenhang grob "der kleinste Abstand zwischen zwei beliebigen Elementen in einem Vektor".

Dieser Wert (40% der Auflösung) wird dann als factor Argument jitter weitergegeben, die es selbst wenig Gesang und Tanz hat:

Das Ergebnis, sagen wir r, r < - x + runif (n, -a, a) wobei n < - length (x) und a ist das Argument Menge (falls angegeben).

Lassen Sie z < - max (x) - min (x) (unter der Annahme der üblichen Fall). Die Höhe a sein hinzugefügt wird entweder als positives Argument Menge bereitgestellt oder auf andere Weise aus z berechnet, wie folgt:

Wenn Menge == 0, setzen wir einen < - Faktor * z/50 (die gleichen wie S).

Wenn Menge NULL (default) ist, stellen wir einen < - Faktor * d/5 wobei d die kleinste Differenz zwischen benachbarten einzigartigen (abgesehen von Flaum) x Werte.

Verwandte Themen