ProblemData Format dla podzbioru kleszczy na osi czasu
Chciałbym sformatować oś X (czas) tak, że weekendy są wyraźnie widoczne. Chciałbym wyświetlić zarówno datę, jak i dzień tygodnia.
Obecna sytuacja
zrobić to z pełnego kodu (poniżej)
scale_x_date(breaks=myData$timestamp,
labels=paste(
substr(format(myData$timestamp, "%a"),1,1),
format(myData$timestamp, "%d"),
sep="\n")
)
który daje mi
kupna sytuację
Wolałbym mieć jednoliterowy skrót w dni powszednie, ponieważ stał się tam nieco ciasny. Poza tym chciałbym pokolorować niedziele (i święta naprawdę) na czerwono. Oto co mam na myśli (wykonane z GIMP). Zauważ, że pierwszy poniedziałek i ostatni piątek dodano za pomocą
scale_x_date(breaks = "1 day",
minor_breaks = "1 days",
labels = date_format("%a\n%d"),
name="")
Jednak potem dostać skrót trzy List dni powszednie, które usunąłem w GIMP-ie.
Oto pełna kodu tego przykładu.
library(ggplot2)
library(scales)
library(reshape2)
minimumTime <- as.Date("2014-07-01")
maximumTime <- as.Date("2014-07-31")
x <- seq(minimumTime,maximumTime, by="1 day")
y1 <- sin(as.numeric(x)/3)
y2 <- cos(as.numeric(x)/3)
myData <- data.frame(timestamp=x, y1=y1, y2=y2)
myData <- melt(myData, id.vars="timestamp")
rects <- data.frame(saturdays=myData[weekdays(myData$timestamp) == "Saturday","timestamp"]-0.5, sundays = myData[weekdays(myData$timestamp) == "Saturday","timestamp"]+1.5)
myPlot <- ggplot() +
geom_rect(data=rects, aes(xmin=saturdays, xmax=sundays,ymin=-Inf, ymax=Inf), alpha=0.1) +
geom_line(data=myData, aes(x=timestamp, y=value, colour=variable,size=1)) +
geom_point(data=myData, aes(x=timestamp, y=value, colour=variable,size=2)) +
scale_x_date(breaks=myData$timestamp, labels=paste(substr(format(myData$timestamp, "%a"),1,1),format(myData$timestamp, "%d"),sep="\n")) +
#scale_x_date(breaks = "1 day", minor_breaks = "1 days", labels = date_format("%a\n%d"), name="") +
scale_size_continuous(range = c(1.5,5), guide=FALSE)
Więc Podsumowując:
- Czy istnieje sposób, aby kolor konkretnych przerw w innym kolorze?
- Czy istnieje sposób zmiany etykiety ręcznie i nadal mają one w poniedziałek i piątek na początku i na końcu w tym przypadku?
- Ponadto, jeśli istnieje sposób, aby linie każdej etykiecie środku, to byłoby niesamowite :)
Dziękujemy!
Hej, to bardzo miłe! Dzięki! Nie odpowiada na pytanie o kolor, ale tak naprawdę to lubię! – bytesinflight
Ładnie napisane odpowiedź, czyste rozwiązanie. Dzięki jeszcze raz! – bytesinflight
To jest bardzo niedoceniona odpowiedź, naprawdę dobra :) Paldies – r0berts