Error de figura de serie de tiempo de ggplot: Entrada no válida: time_trans funciona solo con objetos de clase POSIXct PERO los datos están en POSIXct.
Mi conjunto de datos es un dataframe con la temperatura máxima diaria del agua durante los últimos 4 veranos.
X sitio FechaHora valor Mes Año Día
<int> <fct> <dttm> <dbl> <int> <fct> <chr>
1 6775 RAYNER_UP 2018-07-09 19:00:00 19.8 7 2018 07/10
2 6776 RAYNER_UP 2018-07-10 19:00:00 21.2 7 2018 07/11
3 6777 RAYNER_UP 2018-07-11 19:00:00 20.4 7 2018 07/12
4 6778 RAYNER_UP 2018-07-12 19:00:00 20.1 7 2018 07/13
5 6779 RAYNER_UP 2018-07-13 19:00:00 17.3 7 2018 07/14
6 6780 RAYNER_UP 2018-07-14 19:00:00 19.5 7 2018 07/15
7 6781 RAYNER_UP 2018-07-15 19:00:00 21.2 7 2018 07/16
8 6782 RAYNER_UP 2018-07-16 19:00:00 21.0 7 2018 07/17
9 6783 RAYNER_UP 2018-07-17 19:00:00 19.8 7 2018 07/18
10 6784 RAYNER_UP 2018-07-18 19:00:00 16.8 7 2018 07/19
Mi objetivo es hacer un gráfico de líneas con una línea diferente para cada año. Hasta ahora, con mucha ayuda de Internet, he hecho una línea para cada año PERO la escala está terriblemente apretada ejemplo.
Me gustaría reescalar el eje x en mi series de tiempo para mostrar los días del mes.
Hasta ahora, he intentado usar scale_x_datetime
y scale_x_date
en ggplot, pero no he tenido éxito. Siempre recibo el error: Entrada inválida: time_trans solo funciona con objetos de clase POSIXct, aunque la columna de fecha está en formato POSIXct.
Aquí hay un ejemplo de mi código que está dando el problema:
test1 = ggplot() +
geom_line(data = Rayner_up_summer, aes(x=strftime(DateTime,format="%m/%d"),
y=value,
group = Year,
color=strftime(DateTime,format="%Y"))) +
scale_color_discrete(name="Año") +
labs(x="fecha")
¿Alguien sabe por qué no puedo usar scale_x_datetime
a pesar de que mi eje x (DateTime) está en formato de fecha y hora POSIXct? Agradecería cualquier consejo que puedan tener.
davy.ai
Es probable que el problema esté en la conversión de la columna DateTime a una cadena de caracteres utilizando la función strftime(). Esto podría hacer que ggplot lea el eje x como un vector de caracteres en lugar de un objeto de fecha y hora.
En lugar de convertir la columna DateTime a una cadena de caracteres, prueba a usarla directamente en aes() como un objeto de fecha y hora y luego utiliza scale_x_datetime() para personalizar las etiquetas del eje x.
Aquí tienes un ejemplo de código:
En el código anterior, creamos una nueva columna llamada “Date” que agrega información de las columnas Mes, Día y Año para crear un objeto de fecha. Luego, utilizamos esta columna para crear un gráfico de líneas con ggplot, utilizando directamente la columna DateTime como eje x y utilizando scale_x_datetime() para personalizar los intervalos y etiquetas del eje.
Esto debería resultar en un gráfico de líneas con líneas separadas para cada año y un eje x de fecha y hora con intervalos diarios etiquetados como día/mes.