2016-07-30 3 views
1

Ich möchte die stündlichen Besuche auf einer bestimmten Webseite meiner Website plotten. Die X-Achse zeigt die Stunden (0 bis 23), die Y-Achse zeigt die Anzahl der einmaligen Besuche.Y-Achsen-Etikett mit höchstem Wert nicht gedruckt

Ich unterdrücke Achsen in plot() und fügte sie mit axis() hinzu. Ich möchte nur die niedrigsten und höchsten y-Werte gekennzeichnet: (.. Ellipsen in dem Codebeispiel die Spalte represend ich dies aus für eine bessere visuelle Klarheit der Codestruktur links)

axis(2, 
    at = seq(min(...), max(...), 1), 
    labels = c(min(...), 
       rep.int("", max(...) - min(...) - 1), 
       max(...) 
       ) 
    ) 

Aber in der Handlung, wird das Etikett in dem höchsten Wert nicht angezeigt:

image of plot with missing label

Manchmal (je nach Wertebereich) I das höchsten Wert Etikett b zu erscheinen bekommen y Ändern rep.int("" ... zu rep.int(" ", d. h. Beschriften der Ticks mit einem Leerzeichen, aber das funktioniert nicht immer.

Warum druckt R nicht das höchste Etikett? Und noch wichtiger:

Wie kann ich R zwingen, das höchste Etikett zu drucken?


komplette Codebeispiel:

sitzungen <- c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 8, 4, 0, 8, 3, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 2, 0, 0, 2, 0, 0, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 2, 2, 1, 0, 0, 0, 1, 0, 0, 1, 3, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 4, 1, 2, 1, 7, 7, 1, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 2, 2, 2, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 3, 8, 4, 1, 2, 0, 1, 1, 0, 0, 5, 0, 3, 3, 2, 3, 1, 2, 0, 1, 2, 0, 0, 0, 1, 0, 1, 2, 3, 0, 0, 3, 1, 6, 3, 9, 1, 0, 2, 1, 4, 8, 2, 2, 2, 0, 0, 0, 2, 1, 3, 1, 1, 2, 1, 2, 3, 1, 4, 3, 0, 2, 3, 1, 3, 1, 5, 2, 0, 0, 1, 0, 1, 2, 1, 0, 3, 0, 1, 0, 3, 7, 2, 2, 1, 2, 2, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 15, 2, 2, 1, 0, 0, 0, 0, 0, 2, 3, 0, 3, 0, 2, 1, 1, 2, 2, 4, 2, 1, 4, 2, 1, 2, 2, 1, 0, 0, 0, 7, 0, 2, 4, 2, 0, 2, 3, 5, 2, 1, 4, 4, 2, 0, 2, 4, 0, 0, 0, 0, 0, 0, 0, 1, 3, 0, 2, 1, 2, 1, 1, 2, 1, 4, 1, 1, 1, 0, 0, 3, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) 
stunde <- rep(0:23, 20) 
stuendlich <- data.frame(cbind(stunde, sitzungen)) 
aggr <- aggregate(sitzungen ~ stunde, stuendlich, sum) 
aggr <- rbind(aggr, c(24, aggr[which(aggr$stunde == "23"),]$sitzungen)) 
plot(aggr, type = "s", xlim = c(0, 24), axes = FALSE, xlab = "Stunde", ylab = "Sitzungen", main = "Sitzungen pro Stunde (kumuliert)") 
axis(1, at = seq(0.5, 23.5, 1), labels = 0:23) 
axis(2, at = seq(min(aggr$sitzungen), max(aggr$sitzungen), 1), labels = c(min(aggr$sitzungen), rep.int(" ", max(aggr$sitzungen) - min(aggr$sitzungen) - 1), max(aggr$sitzungen))) 

Antwort

0

Verwenden Sie keine " " oder ""; verwenden NA:

axis(2, at = seq(min(aggr$sitzungen), max(aggr$sitzungen), 1), 
    labels = c(min(aggr$sitzungen), 
       rep.int(NA, max(aggr$sitzungen) - min(aggr$sitzungen) - 1), 
       max(aggr$sitzungen))) 

enter image description here

+1

Brilliant! Vielen Dank :-) –