varias superponer studio modificar lineas graficos grafico graficas ejes dispersion r plot

superponer - Trazar series de tiempo con etiquetas de fecha en el eje x



superponer graficas en r (6)

Es posible en ggplot y puedes usar scale_date para esta tarea

library(ggplot2) Lines <- "Date Visits 11/1/2010 696537 11/2/2010 718748 11/3/2010 799355 11/4/2010 805800 11/5/2010 701262 11/6/2010 531579 11/7/2010 690068 11/8/2010 756947 11/9/2010 718757 11/10/2010 701768 11/11/2010 820113 11/12/2010 645259" dm <- read.table(textConnection(Lines), header = TRUE) dm <- mutate(dm, Date = as.Date(dm$Date, "%m/%d/%Y")) ggplot(data = dm, aes(Date, Visits)) + geom_line() + scale_x_date(format = "%b %d", major = "1 day")

Sé que esta pregunta puede ser un cliché, pero estoy teniendo dificultades para hacerlo.

Tengo el conjunto de datos en el siguiente formato:

Date Visits 11/1/2010 696537 11/2/2010 718748 11/3/2010 799355 11/4/2010 805800 11/5/2010 701262 11/6/2010 531579 11/7/2010 690068 11/8/2010 756947 11/9/2010 718757 11/10/2010 701768 11/11/2010 820113 11/12/2010 645259

Quiero crear un gráfico de series de tiempo, con eje x que representa vists de tiempo y eje y. Además, quiero marcar el eje x con la fecha. El código que estaba usando es el siguiente:

dm$newday = as.POSIXct(strptime(dm$Day, format="%Y-%m-%d")) plot(as.Date(dm$day),dm$visits) axis.Date(1,Day,at=seq(as.Date("2010/10/30"), as.Date("2011/01/29"),by="days"))


Me gusta ggplot también.

Aquí hay un ejemplo:

df1 = data.frame( date_id = c(''2017-08-01'', ''2017-08-02'', ''2017-08-03'', ''2017-08-04''), nation = c(''China'', ''USA'', ''China'', ''USA''), value = c(4.0, 5.0, 6.0, 5.5)) ggplot(df1, aes(date_id, value, group=nation, colour=nation))+geom_line()+xlab(label=''dates'')+ylab(label=''value'')


Me gusta usar ggplot2 para este tipo de cosas:

df$Date <- as.Date( df$Date, ''%m/%d/%Y'') require(ggplot2) ggplot( data = df, aes( Date, Visits )) + geom_line()


Puede rotar las fechas pirateando las notaciones de los ejes con texto ()

Lines <- "Date Visits 11/1/2010 696537 11/2/2010 718748 11/3/2010 799355 11/4/2010 805800 11/5/2010 701262 11/6/2010 531579 11/7/2010 690068 11/8/2010 756947 11/9/2010 718757 11/10/2010 701768 11/11/2010 820113 11/12/2010 645259" dm <- read.table(textConnection(Lines), header = TRUE) dm$Date <- as.Date(dm$Date, "%m/%d/%Y") plot(Visits ~ Date, dm, xaxt = "n", type = "l") axis(1,at=NULL, labels=F) text(x = dm$Date, par("usr")[3]*.97, labels = paste(dm$Date,'' ''), srt = 45, pos = 1, xpd = TRUE,cex=.7)


Tu código tiene muchos errores.

  • Estás mezclando dm$Day y dm$day . Probablemente no es lo mismo
  • Sus encabezados de columna son Date y Visits . Entonces tendrías acceso a ellos (supongo) como dm$Date y dm$Visits
  • En el campo de fecha, tiene %Y-%m-%d esto debe ser %m/%d/%Y

El siguiente código debe trazar lo que desea:

dm$newday = as.Date(dm$Date, "%m/%d/%Y") plot(dm$newday, dm$Visits)


1) Como los tiempos son fechas, asegúrese de usar la clase "Date" , no "POSIXct" o "POSIXlt" . Consulte R News 4/1 para obtener consejos e intente esto donde Lines se define en la Nota al final. No se usan paquetes aquí.

dm <- read.table(text = Lines, header = TRUE) dm$Date <- as.Date(dm$Date, "%m/%d/%Y") plot(Visits ~ Date, dm, xaxt = "n", type = "l") axis(1, dm$Date, format(dm$Date, "%b %d"), cex.axis = .7)

El uso de text = Lines es solo para mantener el ejemplo autocontenido y en realidad sería reemplazado por algo como "myfile.dat" . (continúa después de la imagen)

2) Dado que se trata de una serie temporal, es posible que desee utilizar una representación de serie temporal que proporcione un código ligeramente más simple:

library(zoo) z <- read.zoo(text = Lines, header = TRUE, format = "%m/%d/%Y") plot(z, xaxt = "n") axis(1, dm$Date, format(dm$Date, "%b %d"), cex.axis = .7)

Dependiendo de cómo quiera que se vea la trama, puede ser suficiente utilizar el plot(Visits ~ Date, dm) en el primer caso o el plot(z) en el segundo caso, suprimiendo por completo el comando del axis .

Nota:

Lines <- "Date Visits 11/1/2010 696537 11/2/2010 718748 11/3/2010 799355 11/4/2010 805800 11/5/2010 701262 11/6/2010 531579 11/7/2010 690068 11/8/2010 756947 11/9/2010 718757 11/10/2010 701768 11/11/2010 820113 11/12/2010 645259"