Representar fechas y horas
En este ejemplo se muestra cómo crear gráficas de líneas con fechas y horas que se almacenan en arreglos de datetime
y duration
. El tipo de datos datetime
representa puntos en el tiempo, como el 24 de agosto de 2020 a las 10:50:30, mientras que el tipo de datos duration
representa periodos de tiempo, como 12 horas y 30 minutos. La mayoría de funciones de representación acepta arreglos de datetime
y duration
como coordenadas x, y y z, y muestra valores de marcas con unidades de fecha y hora adecuadas. Puede especificar sus propios límites de ejes y valores de marcas utilizando valores datetime
y duration
. También puede cambiar el formato de los valores de marcas para mostrar las unidades de fecha y hora que elija. Las sugerencias sobre datos muestran valores datetime
y duration
para las posiciones del cursor en una gráfica, y puede exportar esos valores a las variables del área de trabajo. Cuando lee datos de una hoja de cálculo o de un archivo de valores separados por comas (CSV), puede incluir los datos de fecha y hora en sus gráficas.
Representar datos de fecha y hora
Puede representar arreglos de datetime
y duration
sin convertirlos a arreglos numéricos. La mayoría de funciones de representación acepta arreglos de datetime
y duration
como argumentos de entrada.
Por ejemplo, represente un conjunto de datos que tenga valores datetime
en el eje x y valores numéricos en el eje y. Las coordenadas x son los valores datetime
para todos los días de junio y julio de 2021. La gráfica muestra automáticamente valores de marcas con un formato apropiado en el eje x. En este caso, el formato apropiado muestra nombres de meses y números de días con el año.
XDates = [datetime(2021,6,1:30) datetime(2021,7,1:31)]; YNumsForXDates = sin(0:0.1:6); plot(XDates,YNumsForXDates)
De forma similar, represente un conjunto de datos que tiene valores duration
en el eje x. Para crear un arreglo duration
en unidades de segundos, utilice la función seconds
.
XTimes = seconds(0:120); YNumsForXTimes = cos(0:0.05:6); plot(XTimes,YNumsForXTimes)
Especificar los límites de los ejes
Cuando cambia los límites en una gráfica, los valores de marcas que se muestran para los valores de datetime
y duration
se actualizan automáticamente. Puede actualizar los límites de forma interactiva o llamando a las funciones xlim
, ylim
o zlim
para el eje correspondiente. Especifique los nuevos límites como un arreglo datetime
o duration
. Si cambia los límites para acercarse o alejarse lo suficiente, los valores de marcas pueden mostrar otros componentes de fecha y hora, no solo nuevos valores de marcas.
Por ejemplo, represente los arreglos XDates
e YNumsForXDates
. Después, cambie los límites del eje x al 20 de junio y el 7 de julio de 2021, utilizando xlim
. La gráfica representa nuevos valores de marcas.
plot(XDates,YNumsForXDates) xlim([datetime("2021-06-20") datetime("2021-07-07")])
Cambie los límites del eje x al 20 de junio y el 22 de junio de 2021. Los valores de marcas muestran componentes de hora y minuto en el formato hh:mm porque ha acercado la gráfica lo suficiente como para que muestre unidades de tiempo más pequeñas en el eje x.
xlim([datetime("2021-06-20") datetime("2021-06-22")])
Especificar valores de marcas
No tiene que cambiar los límites de los ejes para cambiar los valores de marcas. En su lugar, puede especificar sus propios valores de marcas a lo largo de los ejes x, y o z utilizando las funciones xticks
, yticks
o zticks
. Especifique los valores de marcas como un arreglo datetime
o duration
.
Por ejemplo, represente los arreglos XTimes
e YNumsForXTimes
. Después, especifique los valores de marcas en 0, 60 y 120 segundos utilizando xticks
.
plot(XTimes,YNumsForXTimes) xticks(seconds([0 60 120]))
Especificar el formato de las marcas
Las funciones de representación utilizan formatos predeterminados para mostrar los valores de datetime
y duration
como valores de marcas. Para sobrescribir el formato de los valores de marcas en un eje, utilice las funciones xtickformat
, ytickformat
o ztickformat
.
Por ejemplo, represente XDates
e YNumsForXDates
. Especifique un formato para los valores de marcas que muestra números de año, mes y día utilizando xtickformat
.
plot(XDates,YNumsForXDates)
xtickformat("yyyy-MM-dd")
Como alternativa, también puede llamar a plot
con los argumentos nombre-valor DatetimeTickFormat
o DurationTickFormat
. Por ejemplo, esta llamada a la función plot
crea la misma gráfica.
plot(XDates,YNumsForXDates,"DatetimeTickFormat","yyyy-MM-dd")
Sin embargo, estos argumentos nombre-valor solo se pueden utilizar con la función plot
. Puede utilizar funciones como xtickformat
después de llamar a cualquier función de representación, como scatter
, stem
y stairs
.
Propiedades de ejes que almacenan fechas y horas
Los límites de los ejes, las ubicaciones de las etiquetas de marcas y los valores x, y y z para los arreglos de datetime
y duration
en las gráficas de líneas también se almacenan como propiedades de un objeto Axes
. Estas propiedades representan esos aspectos de las gráficas de líneas.
XLim
,YLim
,ZLim
XTick
,YTick
,ZTick
XData
,YData
,ZData
Por ejemplo, las propiedades XLim
y XTick
asociadas con la gráfica de XDates
e YNumsForXDates
almacenan valores de datetime
. Obtenga el objeto Axes
para la gráfica y muestre estas propiedades.
ax = gca; ax.XLim
ans = 1x2 datetime
2021-06-01 2021-08-03
ax.XTick
ans = 1x5 datetime
2021-06-01 2021-06-15 2021-06-29 2021-07-13 2021-07-27
Exportar y convertir valores de sugerencias sobre datos
Cuando hace clic en una gráfica, crea una sugerencia sobre datos en esa posición del cursor que muestra sus coordenadas x e y. Las sugerencias sobre datos muestran valores numéricos y valores de datetime
y duration
. Sin embargo, cuando exporta los datos del cursor al área de trabajo, las coordenadas se indican como un par de valores numéricos. Para convertir los datos exportados del cursor al valor de datetime
o duration
, use la función num2ruler
.
Por ejemplo, represente XDates
e YNumsForXDates
. A continuación, cree una sugerencia sobre datos haciendo clic en la gráfica.
Para exportar los datos del cursor al área de trabajo, haga clic con el botón secundario en la sugerencia sobre datos y seleccione Export Cursor Data to Workspace. Esta acción exporta los datos del cursor a una estructura en el área de trabajo.
cursor_info = struct with fields: Target: [1×1 Line] Position: [25 0.5985] DataIndex: 26
El campo cursor_info.Position
representa los datos del cursor como un par de valores numéricos. El objeto Axes
asociado con la gráfica tiene la información necesaria para convertir el valor numérico de la coordenada x a un valor de datetime
. Obtenga el objeto Axes
para la gráfica. A continuación, pase la coordenada numérica x y el eje x desde el objeto Axes
a num2ruler
.
ax = gca; datetimePosition = num2ruler(cursor_info.Position(1),ax.XAxis) datetimePosition = datetime 26-Jun-2021
No necesita convertir la coordenada numérica y, cursor_info.Position(2)
porque los valores y de esta gráfica son numéricos.
Representar fechas y horas desde un archivo
Los archivos de datos como hojas de cálculo y archivos CSV suelen almacenar fechas y horas como texto con formato. Cuando lee datos de estos archivos, puede convertir texto que representa fechas y horas a arreglos de datetime
o duration
. A continuación, puede crear gráficas de esos datos.
Por ejemplo, cree una gráfica de datos a partir del archivo de datos de ejemplo outages.csv
. Este archivo CSV está compuesto de seis columnas de datos. Dos columnas contienen texto que representa fechas y horas.
Region,OutageTime,Loss,Customers,RestorationTime,Cause SouthWest,2002-02-01 12:18,458.9772218,1820159.482,2002-02-07 16:50,winter storm SouthEast,2003-01-23 00:49,530.1399497,212035.3001,,winter storm SouthEast,2003-02-07 21:15,289.4035493,142938.6282,2003-02-17 08:14,winter storm ...
La forma recomendada de leer datos de un archivo CSV es utilizar la función readtable
. Esta función lee datos de un archivo y los devuelve en una tabla.
Lea en outages.csv
. La función readtable
convierte automáticamente el texto de las columnas OutageTime
y RestorationTime
a arreglos de datetime
. Las columnas que representan números (Loss
y Customers
) se leen como arreglos numéricos. El resto de las columnas se lee como cadenas. La tabla almacena las columnas de datos de outages.csv
en variables de tabla que tienen los mismos nombres. Finalmente, ordene las filas de T
por las fechas y horas en OutageTime
utilizando la función sortrows
. Si una tabla no está ordenada por hora, la práctica recomendada es ordenar la tabla por hora antes de representar o analizar los datos.
T = readtable("outages.csv","TextType","string"); T = sortrows(T,"OutageTime")
T=1468×6 table
Region OutageTime Loss Customers RestorationTime Cause
___________ ________________ ______ __________ ________________ __________________
"SouthWest" 2002-02-01 12:18 458.98 1.8202e+06 2002-02-07 16:50 "winter storm"
"MidWest" 2002-03-05 17:53 96.563 2.8666e+05 2002-03-10 14:41 "wind"
"MidWest" 2002-03-16 06:18 186.44 2.1275e+05 2002-03-18 23:23 "severe storm"
"MidWest" 2002-03-26 01:59 388.04 5.6422e+05 2002-03-28 19:55 "winter storm"
"MidWest" 2002-04-20 16:46 23141 NaN NaT "unknown"
"SouthWest" 2002-05-08 20:34 50.732 34481 2002-05-08 22:21 "thunder storm"
"MidWest" 2002-05-18 11:04 1389.1 1.3447e+05 2002-05-21 01:22 "unknown"
"NorthEast" 2002-05-20 10:57 9116.6 2.4983e+06 2002-05-21 15:22 "unknown"
"SouthEast" 2002-05-27 09:44 237.28 1.7101e+05 2002-05-27 16:19 "wind"
"SouthEast" 2002-06-02 16:11 0 0 2002-06-05 05:55 "energy emergency"
"West" 2002-06-06 19:28 311.86 NaN 2002-06-07 00:51 "equipment fault"
"SouthEast" 2002-06-17 23:01 42.542 39877 2002-06-17 23:49 "thunder storm"
"MidWest" 2002-07-01 04:33 203.94 60650 2002-07-02 14:54 "severe storm"
"MidWest" 2002-07-01 08:18 100.71 1.8116e+05 2002-07-01 11:33 "severe storm"
"MidWest" 2002-07-10 01:49 168.02 NaN 2002-07-10 17:20 "equipment fault"
"SouthEast" 2002-07-14 21:32 90.83 60133 2002-07-14 23:53 "thunder storm"
⋮
Puede acceder a las variables de tabla utilizando la notación de puntos, haciendo referencia a una variable de tabla por nombre. Con la notación de puntos, puede tratar las variables de tabla como arreglos.
Represente la pérdida de potencia con respecto al tiempo de corte. Para acceder a estas variables de la tabla, utilice la notación de puntos.
plot(T.OutageTime,T.Loss)
Calcule las duraciones de los cortes del suministro eléctrico y represéntelas con respecto a OutageTime
. Para calcular las duraciones, reste OutageTime
a RestorationTime
. El resultado, OutageDuration
, es un arreglo duration
, puesto que la aritmética con valores datetime
produce periodos de tiempo como salida. Algunas de las duraciones de estos cortes son largas, así que cambie el formato de los valores de marcas del eje y de horas a años utilizando ytickformat
. El hecho de que algunos cortes aparentemente duren años indica que puede que haya algunos valores de datos cuestionables en el archivo. Dependiendo de cómo se plantee analizar los datos, puede volver a procesarlos de alguna forma o eliminar las filas que contienen valores incorrectos.
OutageDuration = T.RestorationTime - T.OutageTime;
plot(T.OutageTime,OutageDuration)
ytickformat("y")
Consulte también
plot
| datetime
| duration
| seconds
| readtable
| sortrows
| xlim
| xtickformat
| xticks