2017-12-22 12 views
2

Ich versuche, Schichtdaten nach Stunden (Integer) geordnet nach 3 verschiedenen Schichten (8-16, 16-24, 24-8) am Tag als x-Achse. Die Stunden, die ich habe, sind 24-Stunden-Format, und ich möchte sie nicht in numerischer Reihenfolge (0-24), sondern in der Rangordnung (8-16, 16-24, 24-8) auftragen.ggplot Reihenfolge der kontinuierlichen y-Achse Werte ändern

Hier ist der Code zum Erstellen der Daten und zum Erstellen des Plots. Ich möchte den 0-8 Chunk über den 16-24 Chunk setzen.

set.seed(123) 
Hour = sample(0:24, 500, replace=T) 
Day = sample(0:1, 500, replace=T) 

dat <- as.tibble(cbind(Hour, Day)) %>% 
     mutate(Day = factor(ifelse(Day == 0, "Mon", "Tues")), 
       Shift = cut(Hour, 3, labels = c("0-8", "8-16", "16-24")), 
       Exposure = factor(sample(0:1, 500, replace=T))) 

ggplot(dat, aes(x = Day, y = Hour)) + 
     geom_jitter(aes(color = Exposure, shape = Exposure)) + 
     geom_hline(yintercept = 8) + 
     geom_hline(yintercept = 16) + 
     theme_classic() 

Aktuelle Grundstück

enter image description here

Es ist ein interessantes Problem, und ich habe versucht, eine neue Stunde Variable Umcodierung, die in der Reihenfolge ist, dass ich will, aber dann bin ich sicher nicht, wie man Zeichnen Sie die Standard-24-Stunden-Variable an.

Wie würde ich diese Bestellung durchführen?

Antwort

2

Nicht sicher, ob ich vollständig verstehe, aber wenn Sie Ihre Tabelle in der Spalte Verschiebung konfrontiert, sollte es tun, was Sie wollen. Zuerst müssen Sie die Shift-Spalte in der Reihenfolge Faktor geben Sie an:


dat$Shift <- factor(dat$Shift, levels = c("0-8", "16-24", "8-16")) 

ggplot(dat, aes(x = Day, y = Hour)) + 
    geom_jitter(aes(color = Exposure, shape = Exposure)) + 
    facet_grid(Shift ~ ., scales = "free") + 
    theme_classic() 

enter image description here

+0

ich es durch Verschiebung über Facettierung nicht gedacht hatte! Gute Idee, danke! Ich wollte die Stundenachse beibehalten können, weshalb ich sie nicht einfach nur nach Schicht darstellen möchte. – Curtis

1
set.seed(123) 
Hour = sample(0:24, 500, replace=T) 
Day = sample(0:1, 500, replace=T) 

dat <- as.tibble(cbind(Hour, Day)) %>% 
    mutate(Day = factor(ifelse(Day == 0, "Mon", "Tues")), 
     Shift = cut(Hour, 3, labels = c("0-8", "8-16", "16-24")), 
     Exposure = factor(sample(0:1, 500, replace=T))) 

dat$Shift <- factor(dat$Shift, levels=rev(levels(dat$Shift))) 

ggplot(dat, aes(x = Day, y = Shift)) + 
    geom_jitter(aes(color = Exposure, shape = Exposure)) + 
    geom_hline(yintercept = 8) + 
    geom_hline(yintercept = 16) + 
    theme_classic() 

Sie müssen nur die Ebene umkehren.

enter image description here

Verwandte Themen