Problemaformato di data per il sottoinsieme di zecche sull'asse tempo
vorrei formattare il mio asse X (tempo) in modo che i fine settimana sono chiaramente visibili. Vorrei visualizzare la data e il giorno della settimana.
Situazione attuale
Lo faccio con (codice completo di seguito)
scale_x_date(breaks=myData$timestamp,
labels=paste(
substr(format(myData$timestamp, "%a"),1,1),
format(myData$timestamp, "%d"),
sep="\n")
)
che mi dà
situazione carente
Preferisco avere un'abbreviazione di una lettera per i giorni feriali da quando è diventato un po 'stretto lì .. Inoltre, mi piacerebbe colorare la domenica (e le vacanze davvero) in rosso. Ecco cosa intendo (realizzato con GIMP). Si noti come il primo Lunedi e Venerdì scorso è stato aggiunto utilizzando
scale_x_date(breaks = "1 day",
minor_breaks = "1 days",
labels = date_format("%a\n%d"),
name="")
Tuttavia, allora ottengo un'abbreviazione di tre lettere dei giorni della settimana, che ho rimosso in GIMP.
Ecco il codice completo per questo esempio.
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)
Quindi per riassumere:
- Esiste un modo per colorare le pause specifici in un altro colore?
- C'è un modo per cambiare le etichette manualmente e conservarle per il lunedì e il venerdì all'inizio e la fine in questo caso?
- Inoltre, se c'è un modo per avere le linee di ogni etichetta centrato, che sarebbe impressionante :)
Grazie!
Ehi, che è abbastanza bello! Grazie! Non risponde alla domanda di colore, ma mi piace molto comunque! – bytesinflight
Risposta ben scritta, soluzione pulita. Grazie ancora! – bytesinflight
Questa è una risposta enormemente poco apprezzata, davvero buona :) Paldies – r0berts