2017-12-26 5 views
0

Ich habe gekämpft, um eine Zeitreihe Dot-Plot (kein Boxplot) zu erstellen, die die stilisierten Daten unten dargestellt, die mehrere Datenpunkte pro Tag enthält.R plot mehrere Beobachtungen pro Tag

Die Daten sind nur spärlich gefüllt und es fehlen Daten für viele Tage im Datumsbereich. An manchen Tagen können jedoch Hunderte von Datenpunkten in einem engen Wertebereich liegen. Die X-Achse muss den gesamten Datumsbereich umfassen und auch für Tage, die keine Daten enthalten, hübsche Teilstriche enthalten.

Ich wäre nett, wenn X-Achsen-Etiketten vertikal positioniert und die Y-Achsen-Etiketten horizontal positioniert.

Ich war in der Hilfe und googelte herum und verbrachte Stunden mit ggplot2, ts(), Achse() Einstellungen usw. ohne Erfolg. Die x-Achse ist besonders problematisch.

Es scheint so, als sollte das so einfach sein, aber ich bin ein R noob.

dt,  RotMarks 
2017-01-01, 1 
2017-01-01, 3 
2017-03-10, 2 
2017-03-10, 4 
2017-03-10, 6 
2017-06-15, 10 
2017-06-15, 15 
2017-09-20, 1 
2017-10-31, 12 
2017-10-31, 12 
2017-10-31, 12 
2017-10-31, 12 
2017-10-31, 12 
2017-10-31, 12 
2017-10-31, 12 
2017-10-31, 4 
2017-10-31, 4 
2017-10-31, 4 
2017-10-31, 4 
2017-10-31, 1 
2017-10-31, 1 
2017-10-31, 1 
2017-10-31, 1 
2017-12-31, 1 
2017-12-31, 1 
2017-12-31, 1 
+0

es ziemlich viel ist nie "nett" Ihr Publikum zu bitten, ihre Köpfe zu kippen Etiketten X-Achse lesen 90 ° dreht. – hrbrmstr

+0

sind Sie für kleine Auftragsarbeiten in R verfügbar? – rhk123

Antwort

0

Eine Lösung mit dem Paket. Ich denke nicht, die X-Achse mit jedem Datum zu beschriften, ist eine gute Idee, weil es zu voll wäre. Sie können sehen, dass das Beispiel Datumswechsel als "2 Wochen" verwendet, und es war bereits ein wenig überfüllt. date_labels = "%Y-%m-%d" ist das Datumsformat anzugeben. axis.text.x = element_text(angle = 90, hjust = 1) ist die vertikale Position der x-Etiketten.

library(tidyverse) 

# Expand the data frame to full sequence of dates  
dat2 <- dat %>% 
    mutate(dt = as.Date(dt)) %>% 
    complete(dt = full_seq(dt, period = 1)) 

ggplot(dat2, aes(x = dt, y = RotMarks)) + 
    geom_point() + 
    scale_x_date(name = "Date", 
       date_labels = "%Y-%m-%d", 
       date_breaks = "2 weeks") + 
    theme(axis.text.x = element_text(angle = 90, hjust = 1)) 

enter image description here

DATA

dat <- read.csv(text = "dt,  RotMarks 
2017-01-01, 1 
       2017-01-01, 3 
       2017-03-10, 2 
       2017-03-10, 4 
       2017-03-10, 6 
       2017-06-15, 10 
       2017-06-15, 15 
       2017-09-20, 1 
       2017-10-31, 12 
       2017-10-31, 12 
       2017-10-31, 12 
       2017-10-31, 12 
       2017-10-31, 12 
       2017-10-31, 12 
       2017-10-31, 12 
       2017-10-31, 4 
       2017-10-31, 4 
       2017-10-31, 4 
       2017-10-31, 4 
       2017-10-31, 1 
       2017-10-31, 1 
       2017-10-31, 1 
       2017-10-31, 1 
       2017-12-31, 1 
       2017-12-31, 1 
       2017-12-31, 1", 
       header = TRUE, stringsAsFactors = FALSE) 
+0

Ich mag das, aber wenn ich es r R erzeugt diesen Fehler: konnte nicht finden Funktion "%>%" – rhk123

+0

Haben Sie die ordentliche Packung geladen? – www

+0

Jetzt ist ordentliches geladen. Vielen Dank – rhk123